我有客户满意度反馈,如好,差,优秀等,我想分配一个数值,如优秀= 5,良好= 4,中性= 2,不满意=0,然后按类别求和
这个查询我只需要以"Select“开头
按月分组优400良500
发布于 2019-03-23 17:21:55
用例:
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发布于 2019-03-23 19:50:09
我认为你应该有一个参考表来实现这个目的。如果没有,可以在查询本身中添加一个:
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)https://stackoverflow.com/questions/55312230
复制相似问题