有没有办法在 DuckDB 中按 15 分钟的间隔进行分组?
Posted
技术标签:
【中文标题】有没有办法在 DuckDB 中按 15 分钟的间隔进行分组?【英文标题】:Is there a way to group by intervals of 15 min in DuckDB? 【发布时间】: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 分钟的间隔分组?
【问题讨论】:
【参考方案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 的唯一方法,它会执行得非常好 - 像这样的简单算术运算非常快以上是关于有没有办法在 DuckDB 中按 15 分钟的间隔进行分组?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将时间戳向上或向下舍入到最接近的 30 分钟间隔?