根据您的 SQL 风格,您还可以在聚合计数中隐含 else 语句。
例如,这是一个简单的表格Grades
:
| Letters |
|---------|
| A |
| A |
| B |
| C |
我们可以像这样测试每个聚合计数器语法(SQL Fiddle 中的 Interactive Demo):
SELECT
COUNT(CASE WHEN Letter = 'A' THEN 1 END) AS [Count - End],
COUNT(CASE WHEN Letter = 'A' THEN 1 ELSE NULL END) AS [Count - Else Null],
COUNT(CASE WHEN Letter = 'A' THEN 1 ELSE 0 END) AS [Count - Else Zero],
SUM(CASE WHEN Letter = 'A' THEN 1 END) AS [Sum - End],
SUM(CASE WHEN Letter = 'A' THEN 1 ELSE NULL END) AS [Sum - Else Null],
SUM(CASE WHEN Letter = 'A' THEN 1 ELSE 0 END) AS [Sum - Else Zero]
FROM Grades
以下是结果(为了便于阅读,未透视):
| Description | Counts |
|-------------------|--------|
| Count - End | 2 |
| Count - Else Null | 2 |
| Count - Else Zero | 4 | *Note: Will include count of zero values
| Sum - End | 2 |
| Sum - Else Null | 2 |
| Sum - Else Zero | 2 |
这与SQL 中的聚合函数的文档一致
文档COUNT
:
COUNT(*)
- 返回组中的项目数。这包括 NULL 值和重复项。
COUNT(ALL expression)
- 计算组中每一行的表达式,并返回非空值的数量。
COUNT(DISTINCT expression)
- 计算组中每一行的表达式,并返回唯一的非空值的数量。
文档SUM
:
ALL
- 将聚合函数应用于所有值。ALL 是默认值。
DISTINCT
- 指定 SUM 返回唯一值的总和。