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

求SQL Server查询语句:基于同日上一开奖号计算往期销售额

SQL Server 查询:基于同一天上一个开奖号码计算往期销售额

假设你的开奖数据表名为 lottery_data,包含以下核心字段:

  • draw_date:开奖日期(DATE 类型)
  • draw_number:开奖号码(INT 类型,同一日期内按开奖顺序递增)
  • sales:当期销售额(DECIMAL 或 MONEY 类型)

可以使用 SQL Server 的 LAG() 窗口函数直接实现需求,该函数能在同一分组内获取当前行的前一行数据:

SELECT
    draw_date,
    draw_number,
    sales,
    -- 获取同一天上一个开奖号码的销售额,无前置记录则返回 NULL
    LAG(sales) OVER (PARTITION BY draw_date ORDER BY draw_number) AS previous_sales
FROM lottery_data
ORDER BY draw_date, draw_number;

如果需要把当天第一个开奖号码的往期销售额默认设为 0(避免 NULL),可以用 ISNULL() 处理:

SELECT
    draw_date,
    draw_number,
    sales,
    ISNULL(LAG(sales) OVER (PARTITION BY draw_date ORDER BY draw_number), 0) AS previous_sales
FROM lottery_data
ORDER BY draw_date, draw_number;

关键逻辑说明

  • PARTITION BY draw_date:将数据按开奖日期分组,确保只在同一天的开奖记录中查找上一条数据
  • ORDER BY draw_number:在每个日期分组内按开奖号码排序,保证取到的是当前开奖的上一个顺序的销售额
  • LAG(sales):默认返回当前行的前一行 sales 值,若当前行是分组内第一行,则返回 NULL

示例效果

假设原始数据:

draw_datedraw_numbersales
2024-05-01110000
2024-05-01215000
2024-05-01320000
2024-05-02112000
2024-05-02218000

执行第二个查询后的输出:

draw_datedraw_numbersalesprevious_sales
2024-05-011100000
2024-05-0121500010000
2024-05-0132000015000
2024-05-021120000
2024-05-0221800012000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:20:31