COUNT_IF 函数
功能描述
COUNT_IF 函数用于计算表达式中值为 true 的行数。该函数可以处理任意返回布尔值的表达式,并返回一个 bigint 类型的数值结果。需要注意的是,null 值不会影响计数结果。
语法格式
COUNT_IF([DISTINCT] expr1)
参数说明
expr1
: 需要计算的布尔表达式。返回值为 true 或 false 的任意表达式。
返回结果
- 返回值为 bigint 类型,表示表达式为 true 的行数。
- 如果使用
DISTINCT
关键字,则只计算不同的 true 值,重复的 true 值只计算一次。
使用示例
示例 1:计算不同的 true 值数量
SELECT count_if(col % 2 = 0) FROM VALUES (NULL), (0), (1), (2), (2), (3) AS tab(col);
+-----------------------+
| count_if(col % 2 = 0) |
+-----------------------+
| 3 |
+-----------------------+
示例 2:结合DISTINCT使用
SELECT count_if(DISTINCT col % 2 = 0) FROM VALUES (NULL), (0), (1), (2), (2), (3) AS tab(col);
+--------------------------------+
| count_if(DISTINCT col % 2 = 0) |
+--------------------------------+
| 1 |
+--------------------------------+
示例 3:计算 null 值的数量
SELECT count_if(col IS NULL) FROM VALUES (NULL), (0), (1), (2), (3) AS tab(col);
+-------------------------+
| count_if((col) IS NULL) |
+-------------------------+
| 1 |
+-------------------------+
注意事项
- COUNT_IF 函数仅适用于返回布尔值的表达式。
- 使用
DISTINCT
关键字时,确保表达式返回的值可以区分重复的 true 值。
- null 值不会影响计数结果。