oracle parttion by,Oracle Partition By 的使用

1-介绍

Parttion by 关键字是Oracle中分析性函数的一部分,

它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,

而聚合函数一般只有一条反映统计值的结果。

2-使用方法

场景:查询出每个部门工资最低的员工编号【每个部门可能有两个最低的工资员工】

2a99bec18861d8a5b6d590d596cce642.png

查询结果:

e000d7b4a4ea4406efc13551aafa1136.png

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方法三

6e792169aff19da23680b5430723d085.gif

--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;

d6071616b33eedfcf8ab50d76a9ab276.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值