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

如何通过SQL查询统计每个用户指定日期段内第3至第8天的unitsold总和?

解决方法

要实现统计每个Name在2022年3月1日至4月1日期间自身第3天到第8天的unitsold总和,你需要先给每个用户的日期按顺序编号,再筛选指定区间的记录求和,具体实现如下:

完整SQL语句

WITH daily_sales AS (
    -- 先合并同一用户同一天的销量(若单天仅一条记录可省略此CTE)
    SELECT 
        Name,
        date_col, -- 替换为你的实际日期列名
        SUM(unitsold) AS daily_unitsold
    FROM table1
    WHERE date_col BETWEEN '2022-03-01' AND '2022-04-01'
    GROUP BY Name, date_col
),
ranked_days AS (
    -- 给每个用户的日期按顺序分配序号
    SELECT 
        Name,
        daily_unitsold,
        ROW_NUMBER() OVER (PARTITION BY Name ORDER BY date_col ASC) AS day_rank
    FROM daily_sales
)
-- 筛选第3-8天的记录并求和
SELECT 
    Name,
    SUM(daily_unitsold) AS total_unitsold_day3_to_day8
FROM ranked_days
WHERE day_rank BETWEEN 3 AND 8
GROUP BY Name;

关键说明

  1. 每日销量合并:如果同一个Name在同一天有多条销量记录,daily_sales CTE会先合并成单天总销量,避免把同一天的多条记录算作不同天数。
  2. 日期序号分配:ROW_NUMBER() OVER (PARTITION BY Name ORDER BY date_col ASC)会给每个用户的日期按升序生成独立序号,确保每个用户的第1天、第3天是基于自身的日期序列计算的。
  3. 原SQL问题:你之前的语句sum(unitsold) over (partion by Name order by Asc)存在语法错误(缺少排序列),且该窗口函数是累计求和(从第1天到当前天的累加值),无法直接实现指定区间的求和逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:53:21