oracle 12c:新特性-对Top-N查询结果限制记录
2016-07-11 10:17
796 查看
在之前的版本中有多种间接手段来对顶部或底部记录获取Top-N查询结果。而在12c中,通过新的FETCH FIRST|NEXT|PERCENT语句简化了这一过程并使其变得更为直接。为了从EMP表检索排名前10的工资记录,可以用以下新的SQL语句:
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY;
以下示例获取排名前N的所有相似的记录。例如,如果第十行的工资值是5000,并且还有其他员工的工资符合排名前N的标准,那么它们也同样会由WITH TIES语句获取来源:CUUG官网。
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY WITH TIES;
以下示例限制从EMP表中获取排名前10%的记录:
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 PERCENT ROWS ONLY;
以下示例忽略前5条记录并会显示表的下5条记录:
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;
所有这些限制同样可以很好的应用于PL/SQL块。
BEGIN
SELECT sal BULK COLLECT INTO sal_v FROM EMP
FETCH FIRST 100 ROWS ONLY;
END;
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY;
以下示例获取排名前N的所有相似的记录。例如,如果第十行的工资值是5000,并且还有其他员工的工资符合排名前N的标准,那么它们也同样会由WITH TIES语句获取来源:CUUG官网。
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY WITH TIES;
以下示例限制从EMP表中获取排名前10%的记录:
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 PERCENT ROWS ONLY;
以下示例忽略前5条记录并会显示表的下5条记录:
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;
所有这些限制同样可以很好的应用于PL/SQL块。
BEGIN
SELECT sal BULK COLLECT INTO sal_v FROM EMP
FETCH FIRST 100 ROWS ONLY;
END;
相关文章推荐
- oracle 12c:新特性-截断表CASCADE
- oracle 12c:新特性-网格(Grid)基础架构的增强
- oracle 12c:新特性-网格(Grid)基础架构的增强
- oracle 中使用触发器自动生成UUID
- Oracle 数据库导入导出 dmp文件
- 日文windows系统 oracle数据库乱码的处理
- 关于Oracle Sales Cloud中产品组模板下载与数据导入的配置
- oracle 模糊查询 忽略大小写
- 整理 oracle异常错误处理
- JPA-hibernate-oracle的运用
- oracle 面试题
- Oracle使用小记
- Oracle exists的使用
- Oracle Database 创建HR模式
- Oracle安装时,已有oracle用户,将用户添加到oinstall和dba用户组
- 解决oracle12c安装报“[INS-30131]执行安装程序验证所需的初始设置失败(原因:无法访问临时位置)”方法
- 2.Hibernate 7个步骤
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
- Mybatis中oracle、mysql、db2、sql server的like模糊查询
- Oracle的PL/SQL编程