在SQL中查找连续行之间的年差异?
我试图根据指标id计算连续行之间的日期差异,以找出差异不超过3年的情况在SQL中查找连续行之间的年差异?,sql,postgresql,Sql,Postgresql,我试图根据指标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
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
我想得到的结果是
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年的案例
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
如果这是您想要的,则使用子查询获取外部查询中的上一个值和筛选器:
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';
我删除了不一致的数据库标记。请仅使用您真正使用的数据库进行标记。-这是你想要实现的吗?