[英]sql - SUM(CASE WHEN)
這兩個查詢有什么區別?
第一個查詢:
SUM(CASE WHEN (condition_1)
OR (condition_2)
OR (condition_3)
THEN 1 ELSE 0
END)
第二個查詢:
SUM(CASE WHEN (condition_1) THEN 1 ELSE 0 END +
CASE WHEN (condition_2) THEN 1 ELSE 0 END +
CASE WHEN (condition_3) THEN 1 ELSE 0 END)
這兩個表達式是不等價的。 第一個表達式為滿足 3 個條件中的任何一個的每個記錄添加一個。 第二個為每個記錄和滿足的條件添加一個,因此每個記錄最多可以添加 3 個。
除非條件相互排斥,否則結果會有所不同。
考慮以下條件:
condition_1 id > 1
condition_2 id > 2
condition_3 id > 3
對於這個數據集:
id
---
1
2
4
第一個表達式將產生 2 個(因為 3 個記錄中有 3 個滿足至少一個條件)。
第二個表達式將產生 3(因為第三個記錄滿足兩個條件,它將向結果添加 2)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.