簡體   English   中英

按ID選擇最近的增值值列

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM