繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM