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

Snowflake SQL:如何统计最近N周每周的记录数量?

问题分析与修改建议

你的当前查询存在两个核心问题:

  • 你用固定日期(DATEADD(Day, -49, CURRENT_DATE))做DATE_TRUNC,这会让所有行返回同一个周日期,分组后只能得到一行结果,无法按每条记录所属的周进行统计。
  • 没有添加过滤条件,会统计表中所有历史数据,而非最近7周的记录。

修改后的查询语句

假设你的表中存储记录时间的字段名为record_date(请替换成你实际的日期字段名),修改后的SQL如下:

SELECT
    DATE_TRUNC('WEEK', record_date) AS week_start_date,
    COUNT(table_id) AS record_count
FROM data_warehouse_source
WHERE record_date >= DATEADD(WEEK, -7, CURRENT_DATE)
GROUP BY week_start_date
ORDER BY week_start_date DESC;

关键说明

  • 按记录所属周分组:用表中每条记录的日期字段record_date做DATE_TRUNC('WEEK'),这样能将记录归类到各自所在的周。
  • 过滤最近7周数据:WHERE record_date >= DATEADD(WEEK, -7, CURRENT_DATE)确保只统计过去7周的记录,比计算49天更精准(周的起始/结束不会因跨月等情况偏移)。
  • 排序优化:添加ORDER BY week_start_date DESC可以让结果按从最新周到最旧周的顺序展示,更符合查看习惯。

如果你的业务中周的起始日不是Snowflake默认的周日,可以在DATE_TRUNC中指定起始日,比如设置周一为周起始:

DATE_TRUNC('WEEK', record_date, 'monday') AS week_start_date

内容的提问来源于stack exchange,提问作者boddhisattva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:22:22