您好,登錄后才能下訂單哦!
在之前的版本中有多種間接手段來對頂部或底部記錄獲取 Top-N 查詢結果。而在 12c中,通過新的 FETCH FIRST|NEXT|PERCENT 語句簡化了這一過程并使其變得更為直接。
從 EMP 表檢索排名前 10 的工資記錄
SQL> SELECT empno,ename,sal FROM emp ORDER BY SAL DESC FETCH FIRST 10 ROWS ONLY;
EMPNO ENAME SAL
7839 KING 5000
7902 FORD 3000
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
7499 ALLEN 1600
7844 TURNER 1500
7934 MILLER 1300
7521 WARD 1250
7654 MARTIN 1250
10 rows selected.
原方法
SQL> select * from (SELECT empno,ename,sal FROM emp ORDER BY SAL DESC) where rownum<11 ;
EMPNO ENAME SAL
7839 KING 5000
7902 FORD 3000
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
7499 ALLEN 1600
7844 TURNER 1500
7934 MILLER 1300
7521 WARD 1250
7654 MARTIN 1250
10 rows selected.
從 EMP 表檢索排名從第2行往后的3行 的工資記錄(不包括第二行)
SQL> SELECT empno,ename,sal FROM emp ORDER BY SAL DESC offset 2 rows fetch next 3 rows only;
EMPNO ENAME SAL
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
從 EMP 表中獲取排名前 10%的記錄
SQL> SELECT empno,ename,sal FROM emp ORDER BY SAL DESC FETCH FIRST 10 PERCENT rows only;
EMPNO ENAME SAL
7839 KING 5000
7902 FORD 3000
獲取排名前 9的所有相似的記錄
SQL> SELECT empno,ename,sal FROM emp ORDER BY SAL DESC FETCH FIRST 9 ROWS WITH TIES;
EMPNO ENAME SAL
7839 KING 5000
7902 FORD 3000
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
7499 ALLEN 1600
7844 TURNER 1500
7934 MILLER 1300
7521 WARD 1250
7654 MARTIN 1250
10 rows selected.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。