广

oracle数据库

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    Oracle分析函数学习笔记2

    2018-04-06 10:40:30 次阅读 稿源:互联网
    广告
    全网推广平台,软文发布

    环境:windows 2000 server + Oracle8.1.7 + sql*plus

    目的:以oracle自带的scott模式为测试环境,主要通过试验体会分析函数的用法。

    2.rank()、dense_rank() 的使用

    原表信息:

    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行。


    使用rank()查出各部门薪水前三名的员工姓名、薪水。

    SQL> select * from (
      2  select deptno,rank() over(partition by deptno order by sal desc) rk,ename,sal
      3  from emp
      4  )
      5  where rk<=3
      6  /

        DEPTNO         RK ENAME             SAL
    ---------- ---------- ---------- ----------
            10          1 KING             5000
                        2 CLARK            2450
                        3 MILLER           1300

            20          1 SCOTT            3000
                        1 FORD             3000
                        3 JONES            2975

            30          1 BLAKE            2850
                        2 ALLEN            1600
                        3 TURNER           1500


    已选择9行。

    使用dense_rank()查出各部门薪水前三名的员工姓名、薪水。

    SQL> select * from (
      2  select deptno,dense_rank() over(partition by deptno order by sal desc) drk,ename,sal
      3  from emp
      4  )
      5  where drk<=3
      6  /

        DEPTNO        DRK ENAME             SAL
    ---------- ---------- ---------- ----------
            10          1 KING             5000
                        2 CLARK            2450
                        3 MILLER           1300

            20          1 SCOTT            3000
                        1 FORD             3000
                        2 JONES            2975
                        3 ADAMS            1100

            30          1 BLAKE            2850
                        2 ALLEN            1600
                        3 TURNER           1500


    已选择10行。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告
    广告