使用 CASE 來計算匹配條件的列中的行數

用例

CASE 可以與 SUM 一起使用,僅返回與預定義條件匹配的專案的計數。 (這類似於 Excel 中的 COUNTIF。)

訣竅是返回指示匹配的二進位制結果,因此匹配條目返回的 1 可以總計匹配總數的計數。

鑑於此表 ItemSales,假設你想要了解被歸類為昂貴的專案總數:

ID 專案 Id 價錢 PriceRating
1 100 34.5 昂貴
2 145 2.3 廉價
3 100 34.5 昂貴
4 100 34.5 昂貴
145 10 實惠

詢問

SELECT 
    COUNT(Id) AS ItemsCount,
    SUM ( CASE 
            WHEN PriceRating = 'Expensive' THEN 1
            ELSE 0
          END
        ) AS ExpensiveItemsCount
FROM ItemSales 

結果:

ItemsCount ExpensiveItemsCount
3

替代方案:

SELECT 
    COUNT(Id) as ItemsCount,
    SUM (
        CASE PriceRating 
            WHEN 'Expensive' THEN 1
            ELSE 0
        END
       ) AS ExpensiveItemsCount
FROM ItemSales