【问题标题】:Is there a way to group by intervals of 15 min in DuckDB?有没有办法在 DuckDB 中按 15 分钟的间隔进行分组?
【发布时间】:2021-07-16 03:20:20
【问题描述】:

我做了一张桌子

create table counter (
  createdat TIMESTAMP,
  tickets INT, 
  id VARCHAR
)

我想以 15 分钟为间隔对行进行分组,所以我尝试这样做:

SELECT
  SUM(tickets) AS total,
  extract(year from createdat),
  extract(month from createdat),
  extract(day from createdat),
  extract(hour from createdat)
from counter
where id = ?
group by
  extract(year from createdat),
  extract(month from createdat),
  extract(day from createdat),
  extract(hour from createdat)

通过这个查询,我只能按小时获得。但是我无法将其修改为分钟。

查询如何按 15 分钟的间隔分组?

【问题讨论】:

    标签: sql business-intelligence olap duckdb


    【解决方案1】:

    为刻钟添加一个表达式:

    (extract(minute from createdat) / 15)::integer
    

    到您的专栏:

    select
      sum(tickets) AS total,
      extract(year from createdat),
      extract(month from createdat),
      extract(day from createdat),
      extract(hour from createdat),
      (extract(minute from createdat) / 15)::integer
    from counter
    where id = ?
    group by
      extract(year from createdat),
      extract(month from createdat),
      extract(day from createdat),
      extract(hour from createdat),
      (extract(minute from createdat) / 15)::integer
    

    转换为integer 会截断除法结果的小数部分。

    【讨论】:

    • 非常感谢!!这是获得间隔 15 分钟的更好查询,还是有其他性能更好的查询?
    • @jaox 这是 AFAIK 的唯一方法,它会执行得非常好 - 像这样的简单算术运算非常快
    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多