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 | +---------------------------------------------------+