分析函數之一

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
  scottford薪水一樣多,ford前面的2僅僅是行數、記錄條數的感念。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值