環境:windows2000server Oracle8.1.7 sql*plus,目的:以oracle自帶的scott情勢為測試環境,主要颠末實驗了解解析函數的用法
環境:windows 2000 server Oracle8.1.7 sql*plus
目的:以oracle自帶的scott情勢為測試環境,主要颠末實驗了解解析函數的用法。
1.row_number() 的運用
原表資訊:
SQL> break on deptno skip 1 -- 為效果更清楚,把分比方部門的資料隔段表現。
SQL> select deptno,ename,sal
2 from emp
3 order by deptno,sal desc;
DEPTNO ENAME SAL
---------- ---------- ----------
10 KING 5000
CLARK 2450
MILLER 1300
20 SCOTT 3000
FORD 3000
JONES 2975
ADAMS 1100
SMITH 800
30 BLAKE 2850
ALLEN 1600
TURNER 1500
WARD 1250
MARTIN 1250
JAMES 950
已選擇14行。
運用row_number()查出各部門薪水最高的三個員工姓名、薪水,多于三個的隻取三個。
SQL> select * from (
2 select deptno,row_number() over(partition by deptno order by sal desc) rw,ename,sal
3 from emp
4 )
5 where rw<=3;
DEPTNO RW ENAME SAL
---------- ---------- ---------- ----------
10 1 KING 5000
2 CLARK 2450
3 MILLER 1300
20 1 SCOTT 3000
2 FORD 3000
3 JONES 2975
30 1 BLAKE 2850
2 ALLEN 1600
3 TURNER 1500
已選擇9行。
了解:row_number() 前去的首倘使“行”的資訊,并沒有依照sal排名,如
scott與ford薪水一樣多,ford前面的2僅僅是行數、記實條數的感念。
版權聲明:
原創作品,準許轉載,轉載時請務必以超連結情勢标明文章 原始理由 、作者資訊和本聲明。不然将追查法律責任。