在clickhouse中过滤where at count

w80xi6nr  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(457)

我正在尝试迁移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);

是唯一的这里是一个布尔值0或1。我想知道聚合的计数:country\u id、partner\u id和created\u 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(*)相同的金额。

ac1kyiln

ac1kyiln1#

我在发帖后几分钟就找到了答案:

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

祝你好运。

相关问题