文档详情

Oracle公司内部数据库培训资料17对GROUPBY子句的扩展.ppt

发布:2017-03-24约2.48万字共27页下载文档
文本预览下载声明
对 GROUP BY 子句的扩展 目标 通过本章学习,您将可以: 使用 ROLLUP 操作分组 使用 CUBE 操作分组 使用 GROUPING 函数处理 ROLLUP 或 CUBE操作所产生的空值 使用 GROUPING SETS 操作进行单独分组 组函数 组函数处理多行返回一个行 GROUP BY 子句 HAVING 子句 使用 HAVING 对组函数进行限制 对查询进行第二次限制 带有ROLLUP 和 CUBE 操作的GROUP BY 子句 使用带有ROLLUP 和 CUBE 操作的GROUP BY 子句产生多种分组结果 ROLLUP 产生n + 1种分组结果 CUBE 产生2的n次方种分组结果 ROLLUP 操作符 ROLLUP 是对 GROUP BY 子句的扩展 ROLLUP 产生n + 1种分组结果,顺序是从右向左 ROLLUP 应用举例 CUBE 操作符 CUBE是对 GROUP BY 子句的扩展 CUBE 会产生类似于笛卡尔集的分组结果 CUBE 应用举例 GROUPING 函数 GROUPING 函数可以和 CUBE 或 ROLLUP 结合使用 使用 GROUPING 函数,可以找到哪些列在该行中参加了分组 使用 GROUPING 函数, 可以区分空值产生的原因 GROUPING 函数返回 0 或 1 GROUPING 函数举例 GROUPING SETS GROUPING SETS 是对GROUP BY 子句的进一步扩充 使用 GROUPING SETS 在同一个查询中定义多个分组集 Oracle 对 GROUPING SETS 子句指定的分组集进行分组后用 UNION ALL 操作将各分组结果结合起来 Grouping set 的优点: 只进行一次分组即可 不必书写复杂的 UNION 语句 GROUPING SETS 中包含的分组项越多,性能越好。 GROUPING SETS应用举例 复合列 复合列是被作为整体处理的一组列的集合 ROLLUP (a, , d) 使用括号将若干列组成复合列在ROLLUP 或 CUBE 中作为整体进行操作 在ROLLUP 或 CUBE中, 复合列可以避免产生不必要的分组结果 复合列应用举例 连接分组集 连接分组集可以产生有用的对分组项的结合 将各分组集, ROLLUP 和 CUBE 用逗号连接 Oracle 自动在 GROUP BY 子句中将各分组集进行连接 连接的结果是对各分组生成笛卡尔集 连接分组集应用举例 总结 通过本章学习,您已经可以: 使用 ROLLUP 操作符 使用 CUBE 操作符 使用 GROUPING 函数处理在 ROLLUP 或 CUBE中产生的空值 使用 GROUPING SETS 创建分组集 在 GROUP BY 子句中组合分组: 复合列 连接分组集 Review of GROUP BY Clause The example illustrated in the slide is evaluated by the Oracle Server as follows: The SELECT clause specifies that the following columns are to be retrieved: Department ID and job ID columns from the EMPLOYEES table The sum of all the salaries and the number of employees in each group that you have specified in the GROUP BY clause The GROUP BY clause specifies how the rows should be grouped in the table. The total salary and the number of employees are calculated for each job ID within each department. The rows are grouped by department ID and then grouped by job within each department. … The HAVING Clause Groups are formed and group functions are calculated before the HAVING clause is applied to the groups. The HAVING clause can precede the GROUP BY clause,
显示全部
相似文档