Oracle教程:分组函数嵌套与大数据分析

需积分: 0 1.4k 下载量 77 浏览量 更新于2024-08-06 收藏 31.31MB PDF 举报
"这篇文档是关于Oracle数据库的教程,涵盖了从基础到高级的各种主题,包括数据库基础、查询、函数、多表查询、子查询、数据字典、数据类型、体系结构、DDL、DML、约束、视图、索引、序列、同义词、PL/SQL、游标、函数、存储过程、触发器、事务、用户管理、备份恢复、SQLLoader、数据库设计范式以及对象关系数据库系统等。文档特别提到了Oracle在2009年收购Sun Microsystems的重要事件,强调了数据库在云计算中的核心地位和Oracle在技术整合上的优势,特别是Java技术对于跨平台使用的重要性。" 在5.6章节中,讨论了分组函数嵌套的概念。在这个例子中,`SELECT max(avg(sal)) FROM emp GROUP BY deptno;` 这个查询展示了如何在每个部门中计算平均工资的最高值。`max(avg(sal))` 首先对每个部门的薪水进行平均(`avg(sal)`),然后找出这些平均值中的最大值(`max()`). 在5.7章节的练习中,有以下几个问题: 1. `SELECT avg(sal) FROM emp WHERE sal > 500 GROUP BY deptno;` 这个查询用于计算所有薪水超过500的员工在各个部门的平均工资。 2. `SELECT deptno, avg(sal) FROM emp GROUP BY deptno HAVING avg(sal) > 500;` 这个查询则找出平均工资大于500的部门,`HAVING` 子句在聚合后过滤结果。 3. `SELECT max(comm) FROM emp WHERE deptno = 30;` 查询部门30中获得最高奖金的金额。 4. `SELECT ename FROM emp WHERE comm = (SELECT max(comm) FROM emp WHERE deptno=30);` 找出部门30中奖金最高的员工姓名,通过子查询获取最大奖金值并与主查询匹配。 5. `SELECT job, min(sal), count(*) FROM emp GROUP BY job;` 查询每个职位的最低工资和员工数量。 这些查询展示了如何利用Oracle SQL进行复杂的数据分析,包括使用分组函数(如`AVG`, `MAX`, `COUNT`)和条件过滤(如`WHERE`, `HAVING`),以及子查询来获取特定条件下的数据。此外,也体现了在实际业务场景中,如何通过数据库操作来满足数据分析的需求。