Oracle 分析函数

Oracle分析函数

--row_number():连续不重复 1234567

--rank():跳跃可重复 12333678

--dense_rank():连续可重复 12333456


row_number() over(partition by deptno order by sal desc)

  over( partition by [分区字段,可以有多个] order by [一个或多个字段])

笔试题题目如下:

题目如下:

请用一条sql语句查询出scott.emp表中每个部门工资前三位的数据,显示结果如下:


DEPTNO    SAL1       SAL2       SAL3

------ ---------- ---------- -------------------------------------

    10       5000       2450       1300

    20       3000       2975       1100

    30       2850       1600       1500

select deptno
      ,max(sal) 第一名
      ,max(decode(t
                 ,2
                 ,sal)) 第二名
      ,min(sal) 第三名
  from (select sal
              ,deptno
              ,t
          from (select empno
                      ,ename
                      ,sal
                      ,row_number() over(partition by deptno order by sal desc) t
                      ,deptno
                  from emp) e
         where e.t <= 3) group by deptno;


你可能感兴趣的:(oracle,分析函数,row_number)