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;