我正在尝试在case语句中进行聚合。我发现了两种方法。谁能说出2之间的区别是什么?
(CASE WHEN Event = 5 THEN count(*) ELSE 0 END ) Follow_Count
GROUP BY Event;
SUM(CASE Event WHEN 5 THEN 1 ELSE 0 END) AS Follow_Count
答案 0 :(得分:5)
您的案例1将为表格中的每个事件生成一行(来自您的分组)。你的案例2将只返回1行。
你有没有理由不写:
select count(*)
from my_table
where event = 5;
答案 1 :(得分:3)
更好的是:
count(CASE Event WHEN 5 THEN 1 END) AS Follow_Count
由于 1)用于计数使用自己的标准计数器, 2)“else”不需要(计数不计算空值)
此致 Sayan M。
答案 2 :(得分:2)
没有显着差异。您可以通过比较他们的执行计划来决定哪个更好。