簡體   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