Oracle Partition By 的使用
2024-10-11 05:20:21
1.概述
Parttion by 关键字是Oracle中分析性函数的一部分,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,儿聚合函数一般只有一条反映统计值的结果。
2.使用方式
场景:查询出每个部门工资最低的员工编号【每个部门可能有两个最低的工资员工】
create table TSALER
(
userid NUMBER(10),
salary NUMBER(10),
deptid NUMBER(10)
) -- Add comments to the columns
comment on column TSALER.userid
is '员工ID';
comment on column TSALER.salary
is '工资';
comment on column TSALER.deptid
is '部门ID'; insert into TSALER (工号, 工资, 部门编号)
values (1, 200, 1); insert into TSALER (工号, 工资, 部门编号)
values (2, 2000, 1); insert into TSALER (工号, 工资, 部门编号)
values (3, 200, 1); insert into TSALER (工号, 工资, 部门编号)
values (4, 1000, 2); insert into TSALER (工号, 工资, 部门编号)
values (5, 1000, 2); insert into TSALER (工号, 工资, 部门编号)
values (6, 3000, 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;
最新文章
- UINavigationController和UIScrollView一起使用时导致UIScrollView位置偏移
- Linux-编译器gcc/g++编译步骤
- x86_64平台编译链接汇编程序
- iOS 复选框风格转换 Switchery 开关效果
- 关于521(nyoj)
- Android的FrameLayout使用要注意的问题
- varnish学习以及CDN的原理
- NOIP2018旅行
- MySQL 中的运算符
- Delphi XE4 For IOS之部署问题
- [转]angular2之@Output() EventEmitter
- 源码分享篇:使用Python进行QQ批量登录
- 【转】PHP实现验证码
- Spring Boot打包war jar 部署tomcat
- 使用springmvc,jsp,结合网页文本编辑器kindEditor实现基本博客编辑功能
- robots写法及相关命令介绍
- 查看CentOS的网络带宽出口
- 上传web端——个人项目
- hdu 5443 The Water Problem(长春网络赛——暴力)
- 在其模块列表中有一个错误模块“ManagedPipelineHandler”。