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;

最新文章

  1. UINavigationController和UIScrollView一起使用时导致UIScrollView位置偏移
  2. Linux-编译器gcc/g++编译步骤
  3. x86_64平台编译链接汇编程序
  4. iOS 复选框风格转换 Switchery 开关效果
  5. 关于521(nyoj)
  6. Android的FrameLayout使用要注意的问题
  7. varnish学习以及CDN的原理
  8. NOIP2018旅行
  9. MySQL 中的运算符
  10. Delphi XE4 For IOS之部署问题
  11. [转]angular2之@Output() EventEmitter
  12. 源码分享篇:使用Python进行QQ批量登录
  13. 【转】PHP实现验证码
  14. Spring Boot打包war jar 部署tomcat
  15. 使用springmvc,jsp,结合网页文本编辑器kindEditor实现基本博客编辑功能
  16. robots写法及相关命令介绍
  17. 查看CentOS的网络带宽出口
  18. 上传web端——个人项目
  19. hdu 5443 The Water Problem(长春网络赛——暴力)
  20. 在其模块列表中有一个错误模块“ManagedPipelineHandler”。

热门文章

  1. jquery实现限制textarea输入字数
  2. 浅谈WebLogic和Tomcat
  3. Hibernate加载数据失败failed to lazily initialize a collection of role
  4. PHPExcel中文开发手册翻译版(1)
  5. SqlServer 笔记二 获取汉字的拼音首字母
  6. 关于BeanUiles.copyPropertis()的用法
  7. Nodejs:Glob对象
  8. 关于checkbox的一些问题(全选,反选,以及取值)
  9. 延时调用的php代码
  10. Android开发环境配置