假设我想重写以下聚合查询, z3 Y" t. J/ h' B! t
select id,max(hittime)from statusgroup by id使用像8 }& Q1 j, f2 D1 ?
select id,max(hittime) over(partition by id order by hittime desc) from status如何指定我只对分区的第一个结果感兴趣?7 v* X0 ]# ]8 Y- Z: k# ?
编辑:我在想[RANGE | [行]在frame_start和frame_end之间。不仅可以得到max(hittime),还可以获得第二,第三… , |; H* _% C3 T+ W) n; U6 Y: i ! {! Q8 F/ c" V. O9 `2 f3 C1 y/ _ 解决方案: ' R2 e- R3 D% Q3 T
我认为你需要的是排名功能,这取决于你处理领带的方式ROW_NUMBER或DENSE_RANK。. B$ o* M7 x" w
select id,hittimefrom ( select id,hittime, dense_rank() over(partition by id order by hittime desc) as ranking from status ) as xwhere ranking = 1; --to get max hittime--where ranking <=2; --max and second largest