假设我有一个包含以下数据的表:
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)