案例陈述中的聚合

时间:2010-11-18 02:06:35

标签: sql oracle oracle10g

我正在尝试在case语句中进行聚合。我发现了两种方法。谁能说出2之间的区别是什么?

  1. (CASE WHEN Event = 5 THEN count(*) ELSE 0 END ) Follow_Count GROUP BY Event;

  2. SUM(CASE Event WHEN 5 THEN 1 ELSE 0 END) AS Follow_Count

3 个答案:

答案 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)

没有显着差异。您可以通过比较他们的执行计划来决定哪个更好。