如何在 Clickhouse 中使用 group by 间隔 1 小时?
Posted
技术标签:
【中文标题】如何在 Clickhouse 中使用 group by 间隔 1 小时?【英文标题】:How do i use interval 1 hour in group by in Clickhouse? 【发布时间】:2021-06-02 02:12:58 【问题描述】:我需要一个 clickhouse 查询来按给定日期>= today()-7
的小时间隔分组。
我尝试过date + INTERVAL 1 HOUR
,但它在GROUP BY
中不起作用。
【问题讨论】:
【参考方案1】:在 select 子句中未定义分组表达式 date + INTERVAL 1 HOUR 时有效:
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 │
└─────────────────────┴─────────┘
*/
【讨论】:
它没有用,当我尝试这两种可能性时,它仍然给我一整天的计数。我需要每天每小时计算一次。我也尝试了以下但不工作。 SELECT date + toIntervalHour(1) AS date1, count(date1) from noc.interface where date>=(today()-2) group by date1 试试这个查询:SELECT date + toIntervalHour(1) AS date1, count(date1) from (select * from noc.interface where date>=(today()-2)) group按日期 1.以上是关于如何在 Clickhouse 中使用 group by 间隔 1 小时?的主要内容,如果未能解决你的问题,请参考以下文章
大数据ClickHouse进阶(十三):ClickHouse的GROUP BY 子句
ClickHouse 实时数据去重查询argMax +group by
ClickHouse 到底有多快? 200亿行数据 count,group 的响应时间
如何在 clickhouse 中使用 groupBitmapAnd 和 AggregatingMergeTree 引擎?