Oracle Partition By 的使用


1-介紹

Parttion by 關鍵字是Oracle中分析性函數的一部分,

它和聚合函數不同的地方在於它能夠返回一個分組中的多條記錄,

而聚合函數一般只有一條反映統計值的結果。

 

2-使用方法

 

   場景:查詢出每個部門工資最低的員工編號【每個部門可能有兩個最低的工資員工】  

  

查詢結果:

2.1方法一

select tsaler.* from tsaler 
inner join(select min(salary) as salary,deptid from tsaler group by deptid) c
on tsaler.salary=c.salary and tsaler.deptid=c.deptid 

2.2方法二

select * from tsaler 
inner join(select min(salary) as salary,deptid from tsaler group by deptid) c
using(salary,deptid)

2.3方法三

復制代碼
--row_number() 順序排序
select row_number() over(partition by deptid order by salary) my_rank ,deptid,USERID,salary from tsaler;
--rank() (跳躍排序,如果有兩個第一級別時,接下來是第三級別)
select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
--dense_rank()(連續排序,如果有兩個第一級別時,接下來是第二級)
select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
-------方案3解決方案
select * from (select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1;
select * from (select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1;
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM