メインコンテンツまでスキップ

count_if

count_if

説明

指定された条件を満たす行の総数を返します。

この関数はDISTINCTをサポートしていません。例えば、count_if(DISTINCT x)は無効です。

この関数は内部的にCOUNT + IFに変換されます:

変更前: COUNT_IF(x) 変更後: COUNT(IF(x, 1, NULL))

構文

COUNT_IF(expr)

パラメーター

expr: count_if()が実行されるカラムまたは式です。exprがカラム名の場合、カラムは任意のデータ型であることができます。

戻り値

数値を返します。行が見つからない場合は0が返されます。この関数はNULL値を無視します。

test_count_ifというテーブルがあるとします。

select * from test_count_if;
+------+------+---------------------+------+
| v1 | v2 | v3 | v4 |
+------+------+---------------------+------+
| a | NULL | 2022-04-18 02:05:00 | 1 |
| a | a | 2022-04-18 01:01:00 | 1 |
| a | b | 2022-04-18 02:01:00 | NULL |
| a | b | 2022-04-18 02:15:00 | 3 |
| a | b | 2022-04-18 03:15:00 | 7 |
| c | NULL | 2022-04-18 03:25:00 | 2 |
| c | NULL | 2022-04-18 03:45:00 | NULL |
| c | a | 2022-04-18 03:27:00 | 3 |
+------+------+---------------------+------+

例1: テーブルtest_count_ifv2がNULLである行の数を数える。

select count_if(v2 is null) from test_count_if;
+----------------------+
| count_if(v2 IS NULL) |
+----------------------+
| 3 |
+----------------------+

例2: v1 >= v2またはv4 = 1である行の数を数える。

select count_if(v1 >= v2 or v4 = 1)from test_count_if;
+----------------------------------+
| count_if((v1 >= v2) OR (v4 = 1)) |
+----------------------------------+
| 3 |
+----------------------------------+