Joh*_*Doe 4 sql aggregate-functions
假设我想重写以下聚合查询
select id, max(hittime)
from status
group by id
Run Code Online (Sandbox Code Playgroud)
使用聚合窗口函数,如
select id, max(hittime) over(partition by id order by hittime desc) from status
Run Code Online (Sandbox Code Playgroud)
如何指定我只对分区中的第一个结果感兴趣?
编辑:我在想 [ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3981 次 |
| 最近记录: |