跳到主要内容

在 ClickHouse 中使用过滤聚合

·一分钟阅读
了解如何使用 ClickHouse 中的过滤聚合,通过 `-If` 和 `-Distinct` 聚合组合器简化查询语法并增强分析能力。

使用过滤聚合

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)

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

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

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