使用sql确定数据集的变化率

use*_*543 1 sql

假设我有一个包含以下数据的表:

day1 item1 30
day1 item2 25
day1 item3 27
day2 item1 30
day2 item2 30
day2 item3 20
...
dayN item1 20

我将如何构建一个查询,该查询可以为我提供每天每个项目的变化率。

day1 item1 变化率:0
day1 item2 变化率:-1
day1 item3 变化率:5
day2 item1 变化率:0
day2 item2 变化率:2

我最初的想法(不太了解sql)是循环每一天,并有一个子查询来检查每个项目的前一天并有区别吗?

谢谢

小智 5

适用于大多数现代 DBMS 的标准 SQL 解决方案

SELECT day, 
       item, 
       value, 
       value - lag(value) over (partition by item order by day) as diff_to_prev
FROM your_table
ORDER by day, item
Run Code Online (Sandbox Code Playgroud)

  • @ScottLenart:该链接指的是名为“SQL Server”的产品,**不是**名为 SQL:2006 的 SQL **标准** (2认同)