Oracle经典SQL:查询高于部门平均工资的部门与员工
需积分: 15 24 浏览量
更新于2024-08-15
收藏 707KB PPT 举报
在Oracle数据库中,查询大于部门总平均工资的部门是一个常见的需求,可以通过SQL语句实现复杂的数据分析。这里提供的SQL代码示例展示了如何利用子查询和聚合函数来达到这个目的。
首先,理解SQL语句的结构至关重要。查询的关键在于嵌套子查询的使用。外部查询`select d.*,sum_sal from dept d, (select sum(sal) as sum_sal,deptno from emp group by deptno) e`有两个主要部分:外部表`dept`与内部子查询`e`。子查询通过计算每个部门的员工总薪水(sum_sal)并按部门编号(deptno)分组,得到每个部门的平均薪资。
内部子查询的结果被与外部表`dept`的记录进行匹配,条件是`d.deptno = e.deptno`。这样,只有当部门的平均工资`e.sum_sal`大于该部门所有员工平均薪资的总体平均值时,才会返回满足条件的部门信息。
具体查询语句:
```sql
SELECT d.DEPTNO, DNAME, LOC, SUM_SAL
FROM dept d,
(SELECT SUM(sal) AS SUM_SAL, deptno
FROM emp
GROUP BY deptno
HAVING SUM(sal) > (SELECT AVG(SUM(sal))
FROM emp
GROUP BY deptno)) e
WHERE d.deptno = e.deptno;
```
在这个查询中,`HAVING`关键字用于在子查询内部过滤出平均薪资大于总体平均值的部门,而不是在外部查询中使用`WHERE`过滤结果。
此外,文件还提到了其他一些Oracle SQL查询技巧,如:
1. **提取日期信息**:使用`EXTRACT`函数可以从`sysdate`中获取年、月、日等时间信息。
2. **查询平均工资**:可以单独找出平均工资最低的部门,或者通过子查询计算每个员工的薪资与部门平均薪资的比较。
3. **查询特定条件下的员工**:例如查找工资高于部门平均工资的员工,可以分别在`WHERE`子句或`FROM`子句中包含计算平均工资的子查询。
4. **统计管理者分布**:通过`COUNT(DISTINCT(MGR))`计算每个部门中有多少不同的管理者。
这些示例不仅展示了基本的SQL查询语法,还涵盖了数据处理中的逻辑运算和条件筛选,以及如何有效地利用子查询进行高级分析。掌握这些技能对于在实际工作中高效地操作和分析数据至关重要。
2011-09-05 上传
2016-04-03 上传
2011-08-06 上传
145 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
永不放弃yes
- 粉丝: 674
- 资源: 2万+
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明