我正在尝试迁移 ClickHouse 中的一个 Postgres 表。这是我在 ClickHouse 想到的:
CREATE TABLE loads(
country_id UInt16,
partner_id UInt32,
is_unique UInt8,
ip String,
created_at DateTime
) ENGINE=MergeTree PARTITION BY toYYYYMM(created_at) ORDER BY (created_at);
Run Code Online (Sandbox Code Playgroud)
is_unique 这里是一个带有 0 或 1 的布尔值。我想知道聚合的计数:country_id、partner_id 和created_at,但我也想知道这些负载中有多少是唯一负载。在 Postgres 中,它看起来像:
SELECT
count(*) AS loads,
count(*) FILTER (WHERE is_unique) AS uniq,
country_id,
partner_id,
created_at::date AS ts
FROM loads
GROUP BY ts, country_id, partner_id
Run Code Online (Sandbox Code Playgroud)
ClickHouse 可以吗?还是我应该重新考虑如何聚合数据?我在手册中没有找到任何线索,除了count可以得到expr而不是星号,但count(is_unique = 1)
不起作用,只是返回与 count(*) 相同的数量。
Jam*_*May 12
我在发布后几分钟内就找到了答案:
SELECT count(*), countIf(is_unique = 1) /* .. */
Run Code Online (Sandbox Code Playgroud)
祝你好运。
归档时间: |
|
查看次数: |
3915 次 |
最近记录: |