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_if
でv2
が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 |
+----------------------------------+