Oracle解析函数学习条记1

 根源:网海拾贝




环境: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仅仅是行数、记实条数的感念。








版权声明: 原创作品,批准转载,转载时请务必以超链接情势标明文章 原始理由 、作者信息和本声明。不然将追查法律责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975916.html