Mysql:将整数值赋给String值并获得平均值

时间:2013-03-20 13:04:07

标签: mysql

我正在使用mysql数据库。我有一个名为feedback的表,其中包含 howIsTraining 字段 这可能有一个值五个值“优秀,非常好,好,差和可怜”

我想编写一个查询,它将以下列格式从所有数据中得到该值的平均值

我想给每个值

赋予整数值

优秀= 5 很好= 4 好= 3 差= 2 可悲= 1

如果我在表中有五个记录优秀,非常好,优秀,良好,差 这意味着((5 + 4 + 5 + 3 + 2)/ 5)= 3.8

最后它会给出结果为3.8

3 个答案:

答案 0 :(得分:5)

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

但你应该真的考虑更好的设计(例如杰克所示)

答案 1 :(得分:1)

假设您有另一张表来保存分数:

scores
----------+------
term      | value
----------+------
Excellent | 5
Very Good | 4
...

然后你会有一个这样的查询:

SELECT AVG(scores.value)
FROM feedback
INNER JOIN scores ON term = howIsTraining;

答案 2 :(得分:0)

在数据库中使用1到5之间的整数列是不是更有意义。然后在表示数据时将数字转换为字符串?

在极端情况下,添加额外的整数列并使用UPDATE ... SET grade = 1填充正确的等级值,其中hoIsTraing ='Pathetic'。