程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle分析函數學習筆記1

Oracle分析函數學習筆記1

編輯:關於Oracle數據庫

環境: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排名,如
        20          1 SCOTT            3000
                    2 FORD             3000
scott與ford薪水一樣多,ford前面的2僅僅是行數、記錄條數的感念。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved