跳至主要内容

ClickHouse 中的过滤聚合

·阅读时间:1 分钟

ClickHouse 提供了一种简单直观的编写过滤聚合的方式。例如,将编写过滤聚合的标准 SQL 方式(在 ClickHouse 中也能正常工作)与使用-If 聚合函数组合器 的简写语法进行比较,该组合器可以附加到任何聚合函数

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

为什么过滤聚合很重要?因为它们允许您在网络分析服务中实现“细分比较”功能。例如

WITH
Region = 'us' AS segment1,
Browser = 'Chrome' AS segment2
SELECT
uniqIf(UserID, segment1),
uniqIf(UserID, segment2)
WHERE segment1 OR segment2

查看文档中的 聚合函数组合器 页面以获取更多详细信息。