使用 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