回答

收藏

限制在SQL窗口函数中设置的结果

技术问答 技术问答 91 人阅读 | 0 人回复 | 2023-09-12

假设我想重写以下聚合查询, 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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则