Oracle SQL查询:找出每个部门薪资最高者
需积分: 15 35 浏览量
更新于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万+
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析