开发工具与关键技术:Oracle sql * plus PLSQL Developer
作者:唐国铭
撰写时间:2019年03月28日
在实际中我们会遇到把数据进行分组然后取前N条的情况,比如要获取各科成绩前三名的记录,以下是我个人利用ROWNUM 伪例写出来的,代码有点长,基本思路利用子查询嵌套和连表查询得出
- 先把各科成绩分组后按SCORE成绩倒序排序,然后嵌套子查询后期ROWNUNM值后把此查询命名为SC表,

- 再把各科成绩排序中最大的那个ROWNUM值获取命名为SC2表

即得出分组排序后各科成绩最大的值所对应的ROWNUM - 最后利用JOIN ON把两表连接起来,添加筛选条件

过后查看资料得出了更加简短的SQL语句
在这里是利用分析函数得出每个组的ROWNUM值,因为这是直接得出每个组的排序值,所以直接筛选即可:

本文通过使用ROWNUM伪例及分析函数介绍如何在Oracle中实现分组并选取每组的前N名记录,提供了两种不同的实现方法。
735

被折叠的 条评论
为什么被折叠?



