跳转到主要内容

使用过滤聚合

ClickHouse 提供了一种简单直观的方式来编写过滤聚合 例如,对比一下编写过滤聚合时标准 SQL 的写法 (在 ClickHouse 中同样适用) 与使用 -If 聚合函数组合器 的简写语法;这种组合器可以附加到任何聚合函数后面:
--标准 SQL
SELECT
   avg(number)
FILTER (WHERE number > 50)
FROM numbers(100)

--ClickHouse 使用聚合组合器
SELECT
   avgIf(number, number > 50)
FROM numbers(100)
类似地,也有一个 -Distinct 聚合组合器:
--标准 SQL
SELECT avg(DISTINCT number)

--ClickHouse 使用聚合组合器
SELECT avgDistinct(number)
为什么过滤聚合很重要?因为它可以让你在网站分析服务中实现 “分群对比” 功能。 例如:
WITH
   Region = 'us' AS segment1,
   Browser = 'Chrome' AS segment2
SELECT
   uniqIf(UserID, segment1),
   uniqIf(UserID, segment2)
WHERE segment1 OR segment2
请查看文档中的聚合函数组合器页面, 了解更多信息。
最后修改于 2026年6月10日