--standard SQL
SELECT
avg(number)
FILTER (WHERE number > 50)
FROM numbers(100)
--ClickHouse using an aggregate combinator
SELECT
avgIf(number, number > 50)
FROM numbers(100)
类似地,还有一个 -Distinct 聚合组合器
--standard SQL
SELECT avg(DISTINCT number)
--ClickHouse using an aggregate combinator
SELECT avgDistinct(number)
为什么过滤聚合很重要?因为它们允许您在 Web 分析服务中实现 “分段比较” 功能。例如
WITH
Region = 'us' AS segment1,
Browser = 'Chrome' AS segment2
SELECT
uniqIf(UserID, segment1),
uniqIf(UserID, segment2)
WHERE segment1 OR segment2