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