SQL取group後各組倒數第2行

簡化後的Demo:

      表中有 id 和 operate_time 兩列,每個id對應多個operate_time,需要查詢 每個id的倒數第2次的operate_time.這就相當於要分組然後查詢各組中第2條記錄(按operate_time倒序後)。

     網上查了一下解決方案後,有一個關於查詢學生成績的,當需求不一樣,用 先 倒序後 top2,然後再正序取第1條,大概是這樣子,但套不進來,發現了一個更簡便的方法:用 rank() over()函數,eg:

 

with abc as
(
select rank() over(partition by id order by operate_time desc) ord,id,operate_time from use_log
)
select * from abc
WHERE ord=2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章