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仅仅是行数、记录条数的感念。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值