【问题标题】:How do i use interval 1 hour in group by in Clickhouse?如何在 Clickhouse 中使用 group by 间隔 1 小时?
【发布时间】:2021-06-02 02:12:58
【问题描述】:

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

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

【问题讨论】:

    标签: clickhouse


    【解决方案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.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2020-09-06
    相关资源
    最近更新 更多