在SQL中查找连续行之间的年差异?

在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

我试图根据指标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
我想得到的结果是

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';

我删除了不一致的数据库标记。请仅使用您真正使用的数据库进行标记。-这是你想要实现的吗?