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

时间:2012-03-26 21:31:08

标签: sql

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

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

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

day1 item1 rateOfChange:0
day1 item2 rateOfChange:-1
day1 item3 rateOfChange:5
day2 item1 rateOfChange:0
day2 item2 rateOfChange:2

我的初学者想法(不太了解sql),会循环每一天,并有一个子查询,检查前一天的每个项目并有所作为吗?

由于

2 个答案:

答案 0 :(得分:3)

适用于大多数现代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

答案 1 :(得分:2)

如果您的表被称为带有日期,项目和值整数列的数据表,则可能会这样做

SELECT t1.day, t1.item, (t2.value - t1.value) as rate
FROM datatable t1
INNER JOIN datatable t2
ON t1.item = t2.item 
AND t1.day + 1 = t2.day