ClickHouse는 필터링된 집계를 간단하고 직관적으로 작성할 수 있는 방법을 제공합니다.예를 들어, 필터링된 집계를 작성하는 표준 SQL 방식(이 방식도 ClickHouse에서 문제없이 작동합니다)과 모든 집계 함수에 덧붙일 수 있는 -If집계 함수 조합자를 사용하는 축약 구문을 비교해 보겠습니다:
--표준 SQLSELECT avg(number)FILTER (WHERE number > 50)FROM numbers(100)--집계 조합자를 사용하는 ClickHouseSELECT avgIf(number, number > 50)FROM numbers(100)
이와 마찬가지로 -Distinct 집계 조합자가 있습니다:
--표준 SQLSELECT avg(DISTINCT number)--조합자를 사용하는 ClickHouseSELECT avgDistinct(number)
필터링된 집계가 중요한 이유는 무엇일까요? 웹 분석 서비스에서 “세그먼트 비교” 기능을 구현할 수 있기 때문입니다.
예시는 다음과 같습니다:
WITH Region = 'us' AS segment1, Browser = 'Chrome' AS segment2SELECT uniqIf(UserID, segment1), uniqIf(UserID, segment2)WHERE segment1 OR segment2