比如我有資料
id date
1001 2019 -10-11
2001 2016-01-02
3001 2015-03-04
1001 2013-02-02
1001 2018-03-05
6001 2017-05-06
3001 2018-03-06
2001 2019-05-06
想要比對相同ID下,每個date的差值,怎么寫,新手求指教。
uj5u.com熱心網友回復:
頂頂頂,來大佬教練
uj5u.com熱心網友回復:
沒有人嗎
來人教教
uj5u.com熱心網友回復:
這種意思?SELECT id,
age (date, LAG (date, 1) OVER (PARTITION BY id ORDER BY date))
time_interval
FROM lagtable;
uj5u.com熱心網友回復:
老師,您這個lag函式應該是能實作我的需求,我還在那想用data步回圈實作,就是不知道怎么用指標或者其他遍歷每一行,您這個time_interval是干什么的
uj5u.com熱心網友回復:
沒明白“用指標或者其他遍歷每一行”是怎么個意思?你想用游標遍歷整張表?哪個效率太低了,就算是用游標,你要獲取前一條記錄也會很麻煩,可能會多N倍的IO出來,分析函式掃描全表一次就可以搞定這個事情(前提是你要對全表資料做這個操作,如果只是其中一部分資料,那就看情況了)time_interval就是個別名而已。
uj5u.com熱心網友回復:
明白,我又試了一下,sas里面不讓用游標。還有老師,現在有張表里面有個欄位是0或者1,我想知道后一個0減去(前一個0后面的1)的差,有什么好的演算法或者函式嗎
uj5u.com熱心網友回復:
上面說那個不對,跳過吧……
uj5u.com熱心網友回復:
我想表達的其實是,一張表里面日期和一個欄位是0或者1的,日期又是不連續的,我想知道連續出現15個1的日期差(天數),有啥好演算法嗎。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/51331.html
標籤:PostgreSQL
