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