我如何在 Clickhouse 的分组依据中使用间隔 1 小时?
How do i use interval 1 hour in group by in Clickhouse?
我需要一个 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 子句中需要此值,请使用此查询:
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 │
└─────────────────────┴─────────┘
*/
我需要一个 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 子句中需要此值,请使用此查询:
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 │
└─────────────────────┴─────────┘
*/