Oracle经典SQL:查询高于部门平均工资的部门与员工
需积分: 15 117 浏览量
更新于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查询语法,还涵盖了数据处理中的逻辑运算和条件筛选,以及如何有效地利用子查询进行高级分析。掌握这些技能对于在实际工作中高效地操作和分析数据至关重要。
2025-03-06 上传
2025-03-06 上传
2025-03-06 上传
2025-03-06 上传

永不放弃yes
- 粉丝: 926
最新资源
- 小学水墨风学校网站模板设计
- 深入理解线程池的实现原理与应用
- MSP430编程代码集锦:实用例程源码分享
- 绿色大图幻灯商务响应式企业网站开发源码包
- 深入理解CSS与Web标准的专业解决方案
- Qt/C++集成Google拼音输入法演示Demo
- Apache Hive 0.13.1 版本安装包详解
- 百度地图范围标注技术及应用
- 打造个性化的Windows 8锁屏体验
- Atlantis移动应用开发深度解析
- ASP.NET实验教程:源代码详细解析与实践
- 2012年工业观察杂志完整版
- 全国综合缴费营业厅系统11.5:一站式缴费与运营管理解决方案
- JAVA原生实现HTTP请求的简易指南
- 便携PDF浏览器:随时随地快速查看文档
- VTF格式图片编辑工具:深入起源引擎贴图修改