我正在尝试在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);
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
ClickHouse是否有可能,或者我应该重新考虑如何汇总数据?除了 count 可以获取 expr 而不是星号之外,我没有找到任何手动线索,但是count(is_unique = 1)
不起作用,仅返回与count相同的金额(*)。
答案 0 :(得分:0)
发布后几分钟我才找到答案:
SELECT count(*), countIf(is_unique = 1) /* .. */
祝你好运。