COUNT_IF¶
条件を満たす記録の数を返します。条件を満たす記録がない場合は NULL を返します。
- こちらもご参照ください。
構文¶
集計関数
COUNT_IF( <condition> )
ウィンドウ関数
COUNT_IF( <condition> )
OVER ( [ PARTITION BY <expr1> ] [ ORDER BY <expr2> [ ASC | DESC ] [ <window_frame> ] ] )
window_frame
構文の詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。
引数¶
condition
条件は、 BOOLEAN 値(True、False、または NULL)に評価される必要がある式
expr1
結果を複数のウィンドウに分割する場合は、パーティション化する列です。
expr2
各ウィンドウを並べ替える列です。これは、最終結果セットを順序付けるための ORDER BY 句とは別のものです。
戻り値¶
関数が NULL を返さない場合、戻り値のデータ型は NUMBER になります。
使用上の注意¶
この関数がウィンドウ関数として呼び出される場合、
OVER()句内で ORDER BY サブ句を使用する場合、ウィンドウフレームを使用する必要があります。ウィンドウフレームが指定されていない場合、デフォルトは次の累積ウィンドウフレームです。
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
構文や例を含むウィンドウフレームの詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。暗黙的なウィンドウフレームの詳細については、 ウィンドウフレームの使用上の注意 をご参照ください。
例¶
このセクションの例では、 COUNT_IF
関数の使用方法を示しています。
次のステートメントでは、例で使用するテーブルを設定します。
CREATE TABLE basic_example (i_col INTEGER, j_col INTEGER); INSERT INTO basic_example VALUES (11,101), (11,102), (11,NULL), (12,101), (NULL,101), (NULL,102);SELECT * FROM basic_example ORDER BY i_col;+-------+-------+ | I_COL | J_COL | |-------+-------| | 11 | 101 | | 11 | 102 | | 11 | NULL | | 12 | 101 | | NULL | 101 | | NULL | 102 | +-------+-------+
次の例では、条件の TRUE
を渡し、テーブルにあるすべての行の数を返します。
SELECT COUNT_IF(TRUE) FROM basic_example;+----------------+ | COUNT_IF(TRUE) | |----------------| | 6 | +----------------+
次の例では、 J_COL
の値が I_COL
の値より大きい行の数を返します。
SELECT COUNT_IF(j_col > i_col) FROM basic_example;+-------------------------+ | COUNT_IF(J_COL > I_COL) | |-------------------------| | 3 | +-------------------------+
上記の例では、カウントに NULL 値を持つ行が含まれていないことに注意してください。 3値論理 で説明したように、比較演算子のオペランドが NULL の場合、結果は NULL となり、 COUNT_IF
で指定された条件を満たしません。
次の例は、 NULL 値を含まない行の数を返すことを示しています。
SELECT COUNT_IF(i_col IS NOT NULL AND j_col IS NOT NULL) FROM basic_example;+---------------------------------------------------+ | COUNT_IF(I_COL IS NOT NULL AND J_COL IS NOT NULL) | |---------------------------------------------------| | 3 | +---------------------------------------------------+