[英]Pivot/Conditional aggregation data with count and SUM In t-Sql Query
[英]T-SQL SUM All with a Conditional COUNT
我有一個查詢,產生以下內容:
Team | Member | Cancelled | Rate
-----------------------------------
1 John FALSE 150
1 Bill TRUE 10
2 Sarah FALSE 145
2 James FALSE 110
2 Ashley TRUE 0
我需要為被取消的團隊選擇虛假的成員數,以及不考慮被取消狀態的費率之和……如下所示:
SELECT
Team,
COUNT(Member), --WHERE Cancelled = FALSE
SUM(Rate) --All Rows
FROM
[QUERY]
GROUP BY
Team
因此結果將如下所示:
Team | CountOfMember | SumOfRate
----------------------------------
1 1 160
2 2 255
這只是一個例子。 實際查詢具有多個復雜的聯接。 我知道我可以對比率的總和進行一個查詢,然后對計數進行另一個查詢,然后將這兩個結果結合在一起,但是有沒有一種更簡單的方法,它可以減少稅費並且不會導致我復制並粘貼已經復雜的查詢?
您需要一個有條件的總和,如下所示:
sum(case when cancelled = 'false' then 1 else 0 end)
使用sum()
的原因。 sum()
正在處理記錄,並為每個記錄添加一個值為0
或1
的值。 該值取決於cancelled
的值。 如果為假,則sum()
增加1
計算此類值的數量。
您可以使用count()
做類似的事情,像這樣:
count(case when cancelled = 'false' then cancelled end)
這里的竅門是count()
計算非NULL值的數量。 then
子句可以是非NULL的任何內容cancelled
,常量1
或其他字段。 如果沒有其他值,則任何其他值都將變為NULL
並且不計數。
我一直都喜歡sum()
版本勝過count()
版本,因為我認為它更明確。 在其他SQL方言中,有時可以將其縮短為:
sum(cancelled = 'false')
一旦習慣了,這很有道理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.