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입니다.
사용법 노트¶
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 | +---------------------------------------------------+