SQL 知识量:22 - 44 - 129
在数据应用中经常会遇到需要汇总数据进行分析的需求,例如:统计表中的行数,计算某些行的和,找出列中的最大、最小值等等,这时可以使用SQL提供的聚集函数来满足这类需求。
SQL的5种常用聚集函数如下:
函数 | 说明 |
---|---|
avg() | 返回某列的平均值 |
count() | 返回某列的行数 |
max() | 返回某列的最大值 |
min() | 返回某列的最小值 |
sum() | 返回某列值之和 |
以上聚集函数在各主要的DBMS中得到了相当一致的支持,可以放心使用。
avg()函数用于对表中行数计数并计算其列值之和,最终求得该列的平均值。avg()可以用来返回所有列的平均值,也可以返回特定列或行的平均值。
例如:计算所有学生的平均年龄。
select avg(age) from student;
结果:
+----------+ | avg(age) | +----------+ | 11.1000 | +----------+
也可以计算特定行和列的平均值,例如:计算所有男生的平均年龄:
select avg(age) from student where sex='male';
结果:
+----------+ | avg(age) | +----------+ | 11.1667 | +----------+
需要注意的是:
avg()函数只能用于单个列,即只能确定特定列的平均值,其列名必须作为参数给出,如果要计算多个列的平均值,必须使用多个avg()函数。
avg()函数会忽略值为NULL的行。
count()函数用于计数,具体有两种使用方式:
使用count(*)对表中所有行的数目进行计数,不论列中的值是否是NULL,都计算在内。
使用count(列名)对特定列的行的数目进行计数,如果列中的值是NULL,则忽略不计。
例如:有如下访客记录表(visitor)。
+----+-------+---------+ | id | name | country | +----+-------+---------+ | 1 | Bob | USA | | 2 | Jame | NULL | | 3 | Susan | UK | | 4 | Chen | China | | 5 | Koco | Japan | | 6 | Sophy | NULL | | 7 | Susan | UK | | 8 | Bob | USA | +----+-------+---------+
1、查询所有访客记录数量(访问人次)。
select count(*) from visitor;
结果:
+----------+ | count(*) | +----------+ | 8 | +----------+
2、按国家查询访问人次。
select count(country) from visitor;
结果:
+----------------+ | count(country) | +----------------+ | 6 | +----------------+
如上所示,按照国家(country)查询排除了值为NULL的行。
max()函数用于返回列中的最大值。使用max()函数时,必须指定列名。
例如:查询学生的最大年龄。
select max(age) from student;
结果:
+----------+ | max(age) | +----------+ | 13 | +----------+
需要注意的是:
max()函数一般用于数值和日期值,但许多DBMS允许将max()函数用于文本数据,这时,max()函数将返回按该列排序后的最后一行。
max()函数忽略列值为NULL的行。
min()函数用于返回指定列的最小值。
例如:查询学生的最小年龄。
select min(age) from student;
结果:
+----------+ | min(age) | +----------+ | 10 | +----------+
需要注意的是:
min()函数一般用于数值和日期值,但许多DBMS允许将min()函数用于文本数据,这时,min()函数将返回按该列排序后的最前面一行。
min()函数忽略列值为NULL的行。
sum()函数用于返回指定列值的和,即总计结果。
例如:有一个考试成绩表(exam),现在查询一下所有学生科目得分的总计。
select sum(score) from exam;
结果:
+------------+ | sum(score) | +------------+ | 820 | +------------+
注意:sum()函数会忽略列值为NULL的行。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6