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

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