将文本转换为数字以进行客户满意度调查

时间:2019-03-23 09:12:29

标签: sql sql-server

我有客户满意度反馈,例如好,坏,优秀等,我想分配一个数值,例如“优= 5”,“好= 4”,“中性” = 2,“不满意” = 0 然后按类别对值求和

此查询我只需要以“选择”开头

按月分组 极好400 好500

2 个答案:

答案 0 :(得分:3)

用例何时

select sum(case when satisfaction ='Excellent' then 5 
            when satisfaction ='Good' then 4
            when satisfaction ='Neutral' then 2
             when satisfaction ='Dissatisfied' then 0 end) as satisfaction_val
,category from table_name group by category

答案 1 :(得分:0)

我认为您应该为此目的使用参考表。如果您没有,则可以在查询本身中将其放在一起:

select t.category, sum(v.satisfaction_val)
from t cross join
     (values ('Excellent', 5),
             ('Good', 4),
             ('Neutral', 2),
             ('Dissatisfied', 0)
    ) v(satisfaction, satisfaction_val)
    on t.satisfaction = v.satisfaction
group by t.category;

这是一个更好的解决方案,因为它可以重复使用这些值,所以仅内联使用case表达式即可。例如,如果您希望获得肯定答复的总数,则可以执行以下操作:

select t.category, sum(v.satisfaction_val),
       sum(case when v.satisfaction_value > 3 then 1 else 0 end)
相关问题