我正在使用mysql数据库。我有一个表称为反馈,有一个字段howIsTraining 了五个值“太好了,非常好,好,可怜又可悲”Mysql:将整数值赋给字符串值并得到平均值
我想写这将给该平均查询可能有一个值从所有数据中以下格式
我想给整数值到每个值
优秀= 5 很好的值= 4 好= 3 普尔= 2 青衫= 1
如果说我有五个记录在表优良,非常好,优,良,差 这意味着((5 + 4 + 5 + 3 + 2)/ 5)= 3.8
最后它将给出结果为3.8
我正在使用mysql数据库。我有一个表称为反馈,有一个字段howIsTraining 了五个值“太好了,非常好,好,可怜又可悲”Mysql:将整数值赋给字符串值并得到平均值
我想写这将给该平均查询可能有一个值从所有数据中以下格式
我想给整数值到每个值
优秀= 5 很好的值= 4 好= 3 普尔= 2 青衫= 1
如果说我有五个记录在表优良,非常好,优,良,差 这意味着((5 + 4 + 5 + 3 + 2)/ 5)= 3.8
最后它将给出结果为3.8
select avg(case howIsTraining
when 'Excellent' then 5
when 'Very Good' then 4
when 'Good' then 3
when 'Poor' then 2
when 'Pathetic' then 1
else null
end) as avg_rating
from feedback
SQLFiddle:http://sqlfiddle.com/#!2/14a06/1
但你应该真的想想更好的设计n(例如如杰克所示)
数据库中的整数列的值从1到5是不是更有意义。然后,当表示数据时,将数字转换为字符串?
在极端情况下添加额外的整数列,并通过UPDATE ... SET等级= 1填充正确的等级值,其中hoIsTraing ='可怜'。
假设你有一个保持得分另一个表:
scores
----------+------
term | value
----------+------
Excellent | 5
Very Good | 4
...
然后,你将有一个查询像这样:
SELECT AVG(scores.value)
FROM feedback
INNER JOIN scores ON term = howIsTraining;
在单个表格中是不可能的......即没有另一个表格? – maaz 2013-03-20 13:14:06
@maaz是的,你可以使用'CASE',但我认为你已经有一个单独的表;事实上,我会推荐它,以便您可以使用参考完整性:) – 2013-03-20 13:16:33
它已经有了这些值..我想要那些格式本身的值... – maaz 2013-03-20 13:08:40
一切都可以改变。 – Riho 2013-03-20 13:10:58
但我希望这些值保持在这种格式本身..是不是可行(像我上面说的)在MySQL ...? – maaz 2013-03-20 13:12:00