1.组函数
•不象单行函数,组函数对行的集合进行操作,对每组给出一个结果
这些集合可能是整个表或者是表分成的组
2.常见的组函数
•AVG 平均值
•COUNT 计数
•MAX 最大值
•MIN 最小值
•STDDEV 标准差
•SUM 合计
•VARIANCE 方差
3.使用组函数的原则
•DISTINCT使得函数只考虑不重复的值;ALL使得函数考虑每个值
默认值是ALL,因此不需要指定
•用于函数的参数的数据类型可以是 CHAR、VARCHAR2、NUMBER 或 DATE。
•所有组函数忽略空值
为了用一个值代替空值,可以使用 NVL、NVL2 或 COALESCE 函数。
•当使用GROUP BY子句时,Oracle隐式以升序排序结果集
DESC 可以被用于ORDER BY子句(降序)。
4.创建数据组
•GROUP BY 子句语法:
SELECT column1,column2, ... group_function(column)
FROM table_name
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
•原则:
在SELECT列表中的不在组函数中的所有列,必须在GROUP BY 子句中出现。
在GROUP BY子句中必须包含列名,GROUP BY子句中的列名不一定要求出现在SELECT列表中。
使用WHERE子句,你可以在划分行成组以前过滤行。
在GROUP BY子句中你不能用列别名。
默认情况下,行以包含在GROUP BY列表中的字段的升序排序。
5.非法使用Group 函数的查询:
•在 SELECT 列表中的任何列或表达式(非计算列)必须在 GROUP BY 子句中
•在 GROUP BY 子句中的列或表达式不必在 SELECT 列表中
•不能使用 WHERE 子句来约束分组
•可以使用 HAVING 子句来约束分组
•在 WHERE 子句中不能使用组函数作为条件,只能用非计算列
6.约束分组结果
•用 WHERE 子句约束选择的行,用 HAVING 子句约束组
•用 HAVING 子句约束分组
行被分组
应用组函数
匹配 HAVING 子句的组被显示
7.嵌套组函数
•组函数可以被嵌套两层深度
8.小结
•在 SQL 中有 7 个组函数可用:
AVG 平均值
COUNT 计数
MAX 最大值
MIN 最小值
SUM 合计
STDDEV 标准差
VARIANCE 方差
•可以用 GROUP BY 子句创建子分组,分组可以用 HAVING 子句约束。
在语句中将 HAVING 和 GROUP BY 子句放在 WHERE 子句的后面,ORDER BY 子句放在最后。
•Oracle 服务器按下面的顺序求子句的值:
如果语句包含一个 WHERE 子句,服务器建立侯选行。
服务器确定在 GROUP BY 子句中指定的组。
HAVING 子句进一步约束不满足在 HAVING 子句中分组标准的结果分组
05.Aggregating Data Using Group Functions
转载于:https://www.cnblogs.com/zqf620/archive/2007/01/19/624544.html