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;