zoukankan      html  css  js  c++  java
  • 12c新特性-top-n,fetch first with ties

    语法:

    [ OFFSET offset { ROW | ROWS} ]
    [ FETCH { FIRST | NEXT }[ { rowcount | percent PERCENT } ]
        { ROW| ROWS } { ONLY | WITH TIES } ]

    fetch 

    返回 emp表中sal最小的5行

    SCOTT@EMREP> select sal,ename from emp
    2 order by sal
    3 fetch first 5 rows only;

    返回结果

          SAL ENAME
    ---------- ----------
           800 SMITH
           950 JAMES
          1100 ADAMS
          1250 WARD
          1250 MARTIN

    关键字rows换成row,结果不变。first换成next结果不变。

    SCOTT@EMREP> select sal,ename from emp order by sal fetch first 5 row only;
    
          SAL ENAME
    ---------- ----------
           800 SMITH
           950 JAMES
          1100 ADAMS
          1250 WARD
          1250 MARTIN
    SCOTT@EMREP> select sal,ename from emp order by sal fetch next 5 row only;

    SAL ENAME
    ---------- ----------
    800 SMITH
    950 JAMES
    1100 ADAMS
    1250 WARD
    1250 MARTIN

    offset 跳过sal最小的5行的,下5行数据:

    offset不提供 percent功能

    SCOTT@EMREP> select sal,ename from emp order by sal offset 5 rows fetch next 5 rows only;
    
           SAL ENAME
    ---------- ----------
          1300 MILLER
          1500 TURNER
          1600 ALLEN
          2450 CLARK
          2850 BLAKE

    percent:薪水最少的5%的数据

    SCOTT@EMREP> select sal,ename from emp order by sal fetch first 5 percent rows only;
    
           SAL ENAME
    ---------- ----------
           800 SMITH
    
    SCOTT@EMREP> select sal,ename from emp order by sal fetch next 5 percent row only;
    
           SAL ENAME
    ---------- ----------
           800 SMITH

    with ties 附加最后一行相同的薪水数据

    SCOTT@EMREP> select sal,ename from emp order by sal fetch first 5 percent rows with ties;

    row_limiting_clause允许限制返回行的个数。
    可以指定offset和行数(或者百分比)来返回行。
    可以使用这个子句去实现top-N报表。
    为保证一致性,需要指定order_by 子句以确定排列顺序。

    offset

    使用这个子句可以指定跳跃多少行开始计数。
    offset必须为一个数字。
    如果指定一个附属,那么会被当作0来处理。
    如果指定为null,或者数字大于结果集的行数,就会返回0行。
    如果offset是一个小数,那么小数点会被截取。
    如果没有offset子句,那么默认为0,从第一行开始计数。

    fetch

    使用这个子句去指定返回行的个数或者返回行的百分比。如果没有指定,那么所有的行都会被返回,开始行为offset+1。

    percent/rowcount

    使用rowcount去指定返回多少行。
    rowcount必须为一个数字,如果指定了一个负数,那么rowcount会被当作0。如果rowcount大于以offset+1开始计数的所有行个数,那么所有的行都会被返回。
    如果rowcount是一个小数,那么小数部分会被截断。如果rowcount为null,那么返回0行。
    使用percent去指定返回总行数的百分比。必须为一个数字。如果指定为负数,那么会被当作0。
    如果为null,那么返回0行。

    ONLY | WITH TIES

    指定only会返回明确的行数或者是百分比的行数。

    如果指定with ties子句,那么拥有和最后一行相同的排序键值的行都会被fetch。如果指定了with ties子句,那么必须指定order by 。

    如果没有指定order by,那么不会有附加的行被返回。

    限制

    row_limiting_clause子句的限制:
    无法指定for update子句
    无法包含序列的伪列currentval或者nextval
    如果定义的查询语句中包含row_limiting_clause,那么无法在这之上创建增量刷新的物化视图

  • 相关阅读:
    数论模板
    HZNU_TI1050 训练实录
    2019 ICPC Asia Xuzhou Regional
    ICPC 2019-2020 North-Western Russia Regional Contest
    2019 ICPC Asia Yinchuan Regional
    2019-2020 ICPC, Asia Jakarta Regional Contest
    The 2019 China Collegiate Programming Contest Harbin Site
    2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest
    Educational Codeforces Round 75
    2018-2019 ACM-ICPC, Asia Dhaka Regional Contest
  • 原文地址:https://www.cnblogs.com/catherine007/p/13858636.html
Copyright © 2011-2022 走看看