微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何在 Clickhouse 中分组使用 1 小时间隔?

如何解决我如何在 Clickhouse 中分组使用 1 小时间隔?

我需要一个 clickhouse 查询来按给定日期 >= today()-7 的小时间隔分组。

我尝试过 date + INTERVAL 1 HOUR,但它在 GROUP BY 中不起作用。

解决方法

当分组表达式 date + INTERVAL 1 HOUR 未在 select 子句中定义时有效:

SELECT count()
FROM 
(
    SELECT arrayJoin([toDate('2021-06-01'),toDate('2021-06-02')]) AS date
    WHERE date >= (today() - 2)
)
GROUP BY date + toIntervalHour(1)

/*
┌─count()─┐
│       1 │
│       1 │
└─────────┘
*/

如果您需要在 select-clause 中使用此值,请使用此查询:

SELECT
    date + toIntervalHour(1) AS date1,count()
FROM 
(
    SELECT arrayJoin([toDate('2021-06-01'),toDate('2021-06-02')]) AS date
    WHERE date >= (today() - 2)

)
GROUP BY date1

/*
┌───────────────date1─┬─count()─┐
│ 2021-06-02 01:00:00 │       1 │
│ 2021-06-01 01:00:00 │       1 │
└─────────────────────┴─────────┘
*/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。