开发工具与关键技术:Oracle sql * plus PLSQL Developer
作者:唐国铭
撰写时间:2019年03月28日
在实际中我们会遇到把数据进行分组然后取前N条的情况,比如要获取各科成绩前三名的记录,以下是我个人利用ROWNUM 伪例写出来的,代码有点长,基本思路利用子查询嵌套和连表查询得出
- 先把各科成绩分组后按SCORE成绩倒序排序,然后嵌套子查询后期ROWNUNM值后把此查询命名为SC表,
- 再把各科成绩排序中最大的那个ROWNUM值获取命名为SC2表
即得出分组排序后各科成绩最大的值所对应的ROWNUM - 最后利用JOIN ON把两表连接起来,添加筛选条件
过后查看资料得出了更加简短的SQL语句
在这里是利用分析函数得出每个组的ROWNUM值,因为这是直接得出每个组的排序值,所以直接筛选即可: