分组函数是对表中的多行进行操作,而每组返回一个计算结果。常用的分组函数包括:
函数 | 语法格式 | 函数描述以及注意事项 |
AVG | AVG([distinct|all] expr) | 返回一个数字列或计算列的平均值,忽略空值 |
SUM | SUM([distinct|all] expr) | 返回一个数字列或计算列总和,忽略空值 |
MAX | MAX([DISTINCT|ALL]expr) | 返回一个数字列或计算列的最大值 |
MIN | MIN([DISTINCT|ALL]expr) | 返回一个数字列或计算列的最小值 |
COUNT |
COUNT({*|[DISTINCT|ALL]expr}) 其中expr用来判定非空值(使用*计算所有选定行,包括重复行和带有空值的行) |
返回找到的记录数 |
一、分组函数语法:
SELECT [column,] group_function(column), ...
FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column];
二、分组函数使用准则:
DISTINCT 使函数只考虑非重复值,ALL则考虑包括重复值在内的所有值。默认为ALL.
带有expr参数的函数的数据类型可以为CHAR,VARCHAR2,NUMBER,DATE.
所有分组函数都忽略空值。可以使用NVL,NVL2,或COALESCE函数代替空值
使用GROUP BY 时,Oralce服务器隐式地按照升序对结果集进行排序。可以使用ORDER BY 更改排序结果。
三、GROUP BY 使用准则:
SELECT 中出现的列,如果未出现在分组函数中,则GROUP BY子句必须包含这些列
WHERE 子句可以某些行在分组之前排除在外
不能在GROUP BY 中使用列别名
默认情况下GROUP BY列表中的列按升序排列
GROUP BY 的列可以不出现在分组中