메인 콘텐츠로 건너뛰기
집계 함수는 데이터베이스 전문가가 기대하는 일반적인 방식으로 동작합니다. ClickHouse는 다음도 지원합니다:

NULL 처리

집계 중에는 NULL 인수를 모두 건너뜁니다. 집계에 인수가 여러 개 있는 경우, 그중 하나 이상이 NULL인 행은 모두 무시됩니다. 이 규칙에는 예외가 있습니다. first_value, last_value 함수와 그 별칭(any, anyLast)은 수정자 RESPECT NULLS가 뒤에 오면 이 규칙의 예외로 처리됩니다. 예를 들어 FIRST_VALUE(b) RESPECT NULLS가 있습니다. 예시: 다음 테이블을 살펴보겠습니다:
예를 들어 y 컬럼의 값 합계를 구해야 한다고 가정해 보겠습니다:
이제 groupArray 함수를 사용해 y 컬럼으로부터 배열을 만들 수 있습니다:
groupArray는 결과 배열에 NULL을 포함하지 않습니다. 사용 사례에 맞는 값으로 NULL을 바꾸려면 COALESCE를 사용할 수 있습니다. 예를 들어 avg(COALESCE(column, 0))는 집계 시 컬럼 값을 사용하고, NULL인 경우 0을 사용합니다:
또한 Tuple을 사용하면 NULL을 스키핑하는 동작을 우회할 수 있습니다. NULL 값만 포함하는 TupleNULL이 아니므로, 집계 함수는 해당 NULL 값 때문에 그 행을 스키핑하지 않습니다.
컬럼이 집계 함수의 인수로 사용되면 집계가 적용되지 않는다는 점에 유의하십시오. 예를 들어 매개변수가 없는 count (count()) 또는 상수 매개변수를 사용하는 (count(1)) 경우에는 블록의 모든 행을 계산합니다(GROUP BY 컬럼은 인수가 아니므로 그 값과 무관함). 반면 count(column)은 column이 NULL이 아닌 행의 개수만 반환합니다.
그리고 다음은 RESPECT NULLS를 사용하는 first_value의 예시로, NULL 입력값도 그대로 존중되어 NULL 여부와 관계없이 처음 읽은 값을 반환하는 것을 확인할 수 있습니다:
마지막 수정일 2026년 6월 10일