我正在使用mysql数据库。我有一张名为“反馈”的表格,其中有一个字段howIsTraining,它可能在“优秀、非常好、好、可怜和可怜”的五个值中有一个值。
我想要写一个查询,它将从所有数据中以以下格式给出这个值的平均值
我想给每个值取整数值。
优秀=5非常好=4好=3穷人=2可悲=1
如果我在表中有五张记录
最后给出的结果为3.8
发布于 2013-03-20 13:13:54
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
但是您应该考虑一个更好的设计(如Jack所示)。
发布于 2013-03-20 13:10:57
假设您有另一张保存分数的表:
scores
----------+------
term | value
----------+------
Excellent | 5
Very Good | 4
...然后就会有这样的查询:
SELECT AVG(scores.value)
FROM feedback
INNER JOIN scores ON term = howIsTraining;发布于 2013-03-20 13:07:02
如果数据库中的整数列的值为1到5,那么在表示数据时,将数字转换为字符串,这不是更有意义吗?
在极端情况下,添加额外的整数列,并通过更新填充正确的等级值。把grade=1设为hoIsTraing=‘可悲’。
https://stackoverflow.com/questions/15524356
复制相似问题