lz0-007 读书笔记05

本文介绍了SQL中的组函数如AVG、COUNT等及其使用原则,并详细解释了如何通过GROUP BY子句创建数据组,包括分组的创建、约束及嵌套组函数的应用。
05.Aggregating Data Using Group Functions

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 子句中分组标准的结果分组

转载于:https://www.cnblogs.com/zqf620/archive/2007/01/19/624544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值