Oracle SQL查询:找出每个部门薪资最高者
需积分: 15 53 浏览量
更新于2024-08-15
收藏 707KB PPT 举报
"这篇资源主要介绍了如何在Oracle数据库中使用SQL进行高级查询,特别是针对每个部门工资最高的人的查询。作者李金峰分享了多个实用的SQL语句示例,涵盖了日期提取、平均工资计算、部门比较以及管理者分布等多个方面。"
在Oracle SQL中,查询每个部门工资最高的人是一个常见的需求。上述描述中给出的查询方法利用了窗口函数`row_number()`。`partition by`语句被用来将数据按照`deptno`(部门编号)进行分组,然后`order by sal desc`根据薪水降序排列。`row_number()`函数在每个分组内为每一行分配一个顺序号,这里选取`rn<3`,即每个部门的前两名高薪员工。例如,部门10的KING和CLARK,部门20的SCOTT和FORD,以及部门30的BLAKE和ALLEN。
除了这个示例,还提到了其他有用的SQL技巧:
1. **从当前时间中抽取年、月、日**:可以使用`extract()`函数,如`extract(year from sysdate)`、`extract(month from sysdate)`和`extract(day from sysdate)`,分别获取系统当前日期的年份、月份和日期。
2. **查询平均工资最低的部门及工资**:通过子查询先计算每个部门的平均工资,再按平均工资升序排序,然后用`rownum=1`选择平均工资最低的部门。例如,部门30的平均工资是1566.66667。
3. **查询大于本部门平均工资的员工**:可以通过嵌套查询来实现,比较员工的工资与所在部门的平均工资。两种写法(将查询平均工资的SQL放在`where`后或`from`后)都能得到相同的结果。
4. **查询各部门管理者的分布情况**:通过`count(distinct(mgr))`统计每个部门中不为空的经理人数,`where mgr is not null`排除无经理的情况,`group by deptno`按部门分组,展示了各部门的管理者数量。
这些示例展示了Oracle SQL的强大功能,包括聚合函数、子查询、窗口函数以及日期处理等,对于理解和操作Oracle数据库的日常任务非常有帮助。通过学习和应用这些知识,可以更高效地管理和分析企业数据。
2024-07-15 上传
2016-04-03 上传
2010-09-07 上传
2024-09-25 上传
2016-11-09 上传
145 浏览量
2018-01-21 上传
2009-07-06 上传
2017-11-01 上传
韩大人的指尖记录
- 粉丝: 30
- 资源: 2万+
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍