天天看點

Oracle解析函數學習條記1

 環境: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僅僅是行數、記實條數的感念。

版權聲明:

原創作品,準許轉載,轉載時請務必以超連結情勢标明文章 原始理由 、作者資訊和本聲明。不然将追查法律責任。