假设我想重写以下聚合查询
select id, max(hittime) from status group by id
使用像
select id, max(hittime) over(partition by id order by hittime desc) from status
如何指定我只对分区中的第一个结果感兴趣?
编辑:我当时在想[RANGE | [行]在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