在ClickHouse处过滤的位置

时间:2019-08-22 17:26:44

标签: clickhouse

我正在尝试在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相同的金额(*)。

1 个答案:

答案 0 :(得分:0)

发布后几分钟我才找到答案:

SELECT count(*), countIf(is_unique = 1) /* .. */

祝你好运。