假设我想重写以下聚合查询
select id, max(hittime)
from status
group by id
使用聚合窗口函数,如
select id, max(hittime) over(partition by id order by hittime desc) from status
如何指定我只对分区中的第一个结果感兴趣?
编辑:我在想 [ RANGE | ] 可能有一个解决方案ROWS ] 在 frame_start 和 frame_end 之间。不仅要获得 max(hittime) 还要获得第二、第三...
最佳答案
我认为您需要的是一个排名函数,ROW_NUMBER 或 DENSE_RANK 取决于您想如何处理关系。
select id, hittime
from (
select id, hittime,
dense_rank() over(partition by id order by hittime desc) as ranking
from status
) as x
where ranking = 1; --to get max hittime
--where ranking <=2; --max and second largest
关于sql - 限制sql窗口函数中的结果集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20161109/