You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QuestDB中按周一起始的周间隔聚合数据?

解决QuestDB按周一起始的周聚合问题

要实现以周一00:00为起始时间的周度聚合,你可以使用以下两种方法:

方法1:用ALIGN TO MONDAY调整SAMPLE BY对齐规则

QuestDB的SAMPLE BY支持指定对齐到特定星期几,直接添加ALIGN TO MONDAY即可替代默认的日历对齐(默认以周四为周起始)。完整查询如下:

SELECT timestamp, sum(amount)
FROM trades
WHERE timestamp >= '2023-01-01' AND timestamp < '2024-01-01'
SAMPLE BY 7d ALIGN TO MONDAY

注意:2023年1月1日是周日,第一个符合要求的周起始为2023-01-02(周一)。若结果中出现2022-12-26(周一)的行,该行聚合的是2023年1月1日至1月2日的交易数据,你可根据需求添加AND timestamp >= '2023-01-02'进一步过滤。

方法2:通过date_trunc函数截断到周一再分组

用date_trunc函数显式将时间戳截断到周一起始时间,再分组聚合,这种方式更灵活:

SELECT date_trunc('week', timestamp, 1) AS week_start, sum(amount)
FROM trades
WHERE timestamp IN '2023'
GROUP BY week_start
ORDER BY week_start

这里date_trunc的第三个参数1用于指定周起始为周一(默认值为4,对应周四)。

补充说明

  • QuestDB的SAMPLE BY不支持1w或1week的写法,必须用7d表示7天间隔。
  • 两种方法都能确保每行的时间戳对应周一00:00,可根据实际场景选择适配的方式。

内容的提问来源于stack exchange,提问作者Nick The Greek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:05:11