簡體   English   中英

sql - 總和(情況下)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM