[英]Select most recent increase in value column by ID
我正在嘗試一個簡單的子集,但在同時應用我的兩個條件時遇到了一些麻煩。 我希望為每個唯一ID選擇值列增加的最新記錄。 例如,這是我的數據的簡化版本。
ID| Date | Value
A 1/1/17 100
A 1/2/17 185
A 1/3/17 40
A 1/4/17 100
A 1/5/17 30
B 1/3/17 40
B 1/4/17 30
B 1/5/17 65
B 1/6/17 80
B 1/7/17 0
B 1/8/17 0
雖然我想要的輸出是每個ID的最后一次增加值的行
ID| Date | Value
A 1/4/17 100
A 1/6/17 80
有沒有人對如何實現我想要的輸出有一些了解? 謝謝。
兩個步驟:
select t.*
from (select t.*,
row_number() over (partition by id order by date desc) as seqnum
from (select t.*,
max(value) over (partition by id order by date rows between 1 preceding and 1 preceding) as prev_value
from t
) t
where prev_value < value
) t
where seqnum = 1;
在Teradata中,您還可以使用qualify
刪除一級子查詢。
你可以試試這個。
select id,dt,value
from (select t1.*
,max(case when t2.value<t1.value then t1.dt end) over(partition by t1.id) as max_dt
from (select t.*,min(dt) over(partition by id order by dt rows between 1 preceding and 1 preceding) as prev_dt
from t
) t1
join t t2 on t1.prev_dt=t2.dt and t1.id=t2.id
) t
where max_dt=dt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.