假设我有一张包含以下数据的表格:
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),会循环每一天,并有一个子查询,检查前一天的每个项目并有所作为吗?
由于
答案 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