[英]Finding the difference in years between consecutive rows in SQL?
我正在尝试根据indicator_id 计算连续行之间的日期差异,以查找差异不超过3 年的情况。
year indicator_id
-------------------------- ---------------
January 1, 1999, 12:00 AM 1
January 1, 2000, 12:00 AM 1
January 1, 2001, 12:00 AM 1
January 1, 2006, 12:00 AM 1
我想得到的 output 是
year indicator_id Diff
-------------------------- --------------- ------
January 1, 1999, 12:00 AM 1 0
January 1, 2000, 12:00 AM 1 1
January 1, 2001, 12:00 AM 1 1
January 1, 2006, 12:00 AM 1 5
我尝试了以下查询,但它只返回相同的行,差异为 0
SELECT indicator_id,
year,
year - lag(year) over (order by year) as Diff
FROM education_data
请帮忙
查找差异不超过 3 年的案例。
如果这是您想要的,则使用子查询来获取先前的值并在外部查询中进行过滤:
select ed.*
from (select ed.*, lag(year) over (order by year) as prev_year
from education_data ed
) ed
where prev_year >= year - interval '3 year';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.