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

如何统计截至当前记录、日期早于所在周周日的累计记录数?

解决方案

针对你的inventory表,需要统计截至对应周周日的累计记录总数,以下是两种可行的实现方式:

方法一:基于周截止日期统计累计

假设get_week_number是你用于计算周数的自定义函数(返回当年的周序号),先确定每个周的周日截止日期,再统计所有早于等于该日期的记录总数:

WITH weekly_summary AS (
    -- 提取每个周的周数及对应周日日期
    SELECT
        get_week_number(date::DATE) AS week_number,
        MAX(date_trunc('week', date::DATE)::DATE + INTERVAL '6 days') AS week_end_sunday
    FROM inventory
    GROUP BY week_number
    ORDER BY week_number
)
SELECT
    ws.week_number,
    -- 统计所有日期≤当前周周日的记录总数
    (SELECT COUNT(*) FROM inventory i WHERE i.date::DATE <= ws.week_end_sunday) AS count
FROM weekly_summary ws;

方法二:窗口函数累计求和(更高效)

先按周统计单周记录数,再用窗口函数对周数排序后做累计求和:

WITH weekly_counts AS (
    -- 统计每个周的单周记录数
    SELECT
        get_week_number(date::DATE) AS week_number,
        COUNT(*) AS weekly_count
    FROM inventory
    GROUP BY week_number
    ORDER BY week_number
)
SELECT
    week_number,
    -- 按周数顺序累计求和,得到截至当前周的总记录数
    SUM(weekly_count) OVER (ORDER BY week_number) AS count
FROM weekly_counts;

原SQL问题说明

你之前的代码仅统计了单周内的记录数,没有实现累计逻辑。上述两种方法均能输出你期望的结果:

  • 第2周累计2条记录
  • 第3周累计3条记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:52:32