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

求SQL查询语句:计算各Item不同时间点Total的增量值

编写SQL计算Item的时间维度TOTAL差值

原始数据表(结构及数据)

Time |Item| TOTAL
-----------------
000  |   1|   111
-----------------
000  |   2|   113
-----------------
001  |   1|   113
-----------------
001  |   2|   143
-----------------
002  |   1|   173
-----------------
002  |   2|   183

需求说明

按Time维度计算每个Item当前时间点的TOTAL与上一时间点的TOTAL的差值,其中初始时间(Time=000)的差值固定为0,期望输出如下:

Time |Item| TOTAL
-----------------
000  |   1|     0
-----------------
000  |   2|     0
-----------------
001  |   1|     2
-----------------
001  |   2|    30
-----------------
002  |   1|    60
-----------------
002  |   2|    40

计算逻辑示例:Time=001、Item=1时,差值为113-111=2;Time=001、Item=2时,差值为143-113=30,以此类推。

解决方案SQL

使用窗口函数LAG()实现需求,兼容MySQL 8+、PostgreSQL、SQL Server等主流SQL方言:

SELECT 
    Time,
    Item,
    CASE 
        WHEN Time = '000' THEN 0
        ELSE TOTAL - LAG(TOTAL) OVER (PARTITION BY Item ORDER BY Time)
    END AS TOTAL
FROM 
    your_table_name;

代码说明

  • PARTITION BY Item:按Item分组,确保仅计算同一Item的时间序列差值
  • ORDER BY Time:保证时间维度按顺序排列,让LAG()能正确获取上一个时间点的TOTAL值
  • CASE语句专门处理初始时间(Time='000')的差值为0的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:37:17