我有客户满意度反馈,例如好,坏,优秀等,我想分配一个数值,例如“优= 5”,“好= 4”,“中性” = 2,“不满意” = 0 然后按类别对值求和
此查询我只需要以“选择”开头
按月分组 极好400 好500
答案 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)