2、求和 SUM()函数
求和函数SUM( )用于对数据求和,返回选取结果集中所有值的总和。
语法如下:
SELECT SUM(COLUMN_NAME) FROM TABLE_NAME;
说明: 适用范围:SUM()函数只能作用于数值型数据,即列column_name中的数据必须是数值型的。
对NULL值的处理:当对某列数据进行求和时,如果该列存在NULL值,则SUM函数会忽略该值。
示例:查找员工总工资大于10000的部门
SELECT DEPTNAME, SUM(SALARY)
FROM EMP
GROUP BY EMP.DEPTNAME
HAVING SUM(SALARY) > 10000
ORDER BY DEPTNAME;
3、求平均值 AVG()
函数AVG()用于计算一列中数据值的平均值。
语法如下:
SELECT AVG(COLUMN_NAME) FROM TABLE_NAME;
适用范围:与SUM( )函数一样,AVG()函数只能作用于数值型数据,即列column_name中的数据必须是数值型的。
对NULL值的处理:在计算平均值时,AVG()函数将忽略NULL值。
AVG()函数的执行过程实际上是将一列中的值加起来,再将其和除以非NULL值的数目,等价于sum(column)/ count(column)。
如果在某列中,所有行的值都是NULL,则AVG()函数将返回NULL值。
示例:
SELECT AVG(SALARY) AS AVG1,
SUM(SALARY) / COUNT(*) AS AVG2,
SUM(SALARY) / COUNT(SALARY) AS AVG3
FROM EMP;
4、求最大值 MAX(),最小值 MIN()
当需要了解一列中的最大值时,可以使用MAX()函数;同样,当需要了解一列中的最小值时,可以使用MIN()函数。
语法如下:
SELECT MAX(COLUMN_NAME), MIN(COLUMN_NAME) FROM TABLE_NAME;
适用范围:列column_name中的数据可以是数值、字符串或是日期时间数据类型。
MAX()/MIN()函数将返回与被传递的列同一数据类型的单一值。
对 NULL 值的处理:确定列中的最大值(最小值)时,MAX、MIN 函数忽略 NULL 值。
但是, 如果在该列中,所有行的值都是 NULL,则 MAX、MIN 函数将返回 NULL 值。
示例:获得各种工作的最高工资和最低工资
SELECT JOB, MAX(SALARY), MIN(SALARY) FROM EMP GROUP BY JOB;
注意:
在字符串数据类型中使用 MAX 和 MIN 时,对字符型数据的最大值,是按照首字母由 A~Z 的顺序排列,越往后,其值越大。
对于汉字则是按照其全拼拼音排列的,若首字符相 同,则比较下一个字符,以此类推,返回结果的数据类型为字符型数据。
在日期数据类型中使用 MAX 和 MIN 时,对日期时间类型的数据也可以求其最大/最小值,
其大小排列就是日期时间的早晚,越早认为其值越小,返回结果的数据类型为日期型。
5、聚合函数的重值处理
前面介绍的几种聚合函数,可以作用于所选列中的所有数据(不管列中的数据是否有重置),
也可以只对列中的非重值进行处理,即把重复的值只取一次进行聚合分析。
当然,对 于 MAX()/MIN()函数来讲,重值处理意义不大。
可以使用 ALL 关键字指明对所选列中的所有数据进行处理,
使用 DISTINCT 关键字指明对所选列中的非重值数据进行处理。
以 COUNT()函数为例,语法如下。
SELECT COUNT([ ALL / DISTINCT ] COLUMN_NAME) FROM TABLE_NAME;
说明:[ALL/DISTINCT]在缺省状态下,默认是 ALL 关键字,即不管是否有重 值,处理所有数据。
其他聚合函数的用法与此相同。
例如查询部门名称列中存在的不同记录的数目:
SELECT COUNT(DISTINCT EMP.DEPTNAME) FROM EMP;