Oracle 实现分组取前N条记录

开发工具与关键技术:Oracle sql * plus PLSQL Developer
作者:唐国铭
撰写时间:2019年03月28日

在实际中我们会遇到把数据进行分组然后取前N条的情况,比如要获取各科成绩前三名的记录,以下是我个人利用ROWNUM 伪例写出来的,代码有点长,基本思路利用子查询嵌套和连表查询得出

  1. 先把各科成绩分组后按SCORE成绩倒序排序,然后嵌套子查询后期ROWNUNM值后把此查询命名为SC表,
    在这里插入图片描述
  2. 再把各科成绩排序中最大的那个ROWNUM值获取命名为SC2表
    在这里插入图片描述
    即得出分组排序后各科成绩最大的值所对应的ROWNUM
  3. 最后利用JOIN ON把两表连接起来,添加筛选条件
    在这里插入图片描述
    过后查看资料得出了更加简短的SQL语句
    在这里是利用分析函数得出每个组的ROWNUM值,因为这是直接得出每个组的排序值,所以直接筛选即可:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值