本节将简单介绍 sql 的聚集函数以及如何利用它们汇总表的数据
聚集函数
运行在行组上,计算和返回单个值的函数
sql 聚集函数
函数 | 说明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大数 |
MIN() | 返回某列的最小数 |
SUM() | 返回某列值的和 |
AVG() 函数
AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值
select avg(score) as score_avg
from sc;
此查询语句返回了 score_avg,包含了 sc
表中所有 score
字段的平均值,输出为:
+-----------+
| score_avg |
+-----------+
| 70.77778 |
+-----------+
AVG()
也可用来确定特定行或列的平均值,如:
select sid, avg(score) as score_avg
from sc
where sid = 3;
此查询语句返回了 sid = 3
的所有行的平均值,输出为:
+------+-----------+
| sid | score_avg |
+------+-----------+
| 03 | 80.00000 |
+------+-----------+
AVG()
只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个 AVG()
函数
AVG()
函数忽略列值为 NULL 的行
COUNT() 函数
可利用 COUNT() 确定表中行的数目或符合特定条件的行的数目
使用 COUNT(*)
对表中行的数目进行计数,不管表列中包含的是空值( NULL)还是非空值:
select count(sid) as 'stu_count'
from student;
此查询语句返回了学生的总人数,输出为:
+-----------+
| stu_count |
+-----------+
| 12 |
+-----------+
使用 COUNT(column)
对特定列中具有值的行进行计数,忽略 NULL 值:
select count(pay_time) as 'pay_count'
from order_info_utf;
此查询语句返回了 pay_time
字段值不为 null 的行数,输出为:
+----------------+
| pay_count |
+----------------+
| 461805 |
+----------------+
MAX() 函数
MAX() 要求指定列名
select max(score) as score_max
from sc;
此查询语句返回了 sc
表中 score
字段最大的值,输出为:
+-----------+
| score_max |
+-----------+
| 99.0 |
+-----------+
MAX() 函数忽略列值为 NULL 的行
MIN() 函数
MIN() 要求指定列名
select min(score) as score_min
from sc;
此查询语句返回了 sc
表中 score
字段最小的值,输出为:
+------------+
| min(score) |
+------------+
| 31.0 |
+------------+
MIN() 函数忽略列值为 NULL 的行
SUM() 函数
select sum(score) score_sum
from sc
where sid = 3;
此查询语句返回了 sid = 3
的总分,输出为:
+------------+
| sum(score) |
+------------+
| 240.0 |
+------------+
SUM() 也可以用来合计计算值,如:
select sum(price * num) as total_price
from goods;
此查询语句返回了 goods
表中所有商品的总价,输出为:
+-------------+
| total_price |
+-------------+
| 6963697.000 |
+-------------+
SUM() 函数忽略列值为 NULL 的行
聚集不同的值
select avg(distinct score) as score_avg
from sc;
此查询语句查询了所有不同分数的平均分,输出为:
+-----------+
| score_avg |
+-----------+
| 68.84615 |
+-----------+
组合聚集函数
SELECT 语句可根据需要包含多个聚集函数,如:
select count(score) as score_sount,
avg(score) as score_avg,
sum(score) as score_sum,
max(score) as score_max,
min(score) as score_min
from sc;
此查询语句查询了 sc
表中所有的分数人数、平均分、总分、最高分、最低分,输出为:
+-------------+-----------+-----------+-----------+-----------+
| score_sount | score_avg | score_sum | score_max | score_min |
+-------------+-----------+-----------+-----------+-----------+
| 18 | 70.77778 | 1274.0 | 99.0 | 31.0 |
+-------------+-----------+-----------+-----------+-----------+
网友评论