我想在case語句中進行彙總。我找到了兩種方法來做到這一點。任何人都可以說2之間的區別是什麼?彙總在case語句
(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
我想在case語句中進行彙總。我找到了兩種方法來做到這一點。任何人都可以說2之間的區別是什麼?彙總在case語句
(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
沒有顯著差異。通過比較執行計劃,您可以爲您決定哪個更好。
是:
count(CASE Event WHEN 5 THEN 1 END) AS Follow_Count
因爲 1)計數用自己的非標準計數器, 2) 「其他」 不需要(算不算空值)
問候, 薩揚M.
您的案例1將針對表中的每個事件(從您的羣組獲取)生成一行。你的情況2將只返回1行。
是否有一個原因,你會不會只是寫:
select count(*)
from my_table
where event = 5;
另外,你的第一個變種preferrable爲組僅事件,二更靈活,可以在多種變體使用,並與解析函數 – 2010-11-18 03:10:33
你也可以用解碼而不是情況來做到這一點。計數(解碼(事件,5,1))作爲Follow_Count – 2010-11-18 03:48:50
我知道,但它是平等的(除了空值,這是不使用的條件)。所以我決定離開大小寫。 – 2010-11-18 05:32:20