文章目录

  • 1.`count()`函数
  • 2.`sum()`函数和`avg()`函数
  • 3.max()函数和min()函数
  • 4.利用`group by`子句与`with rollup`一起进行统计




MySQL的常用聚合函数包括count()sum()avg()max()min()等。
其中,

count()用来统计记录的条数;
sum()用来计算字段的值的总和;
avg()用来计算字段的值的平均值;
max()用来查询字段的最大值;
min()用来查询字段的最小值。

利用聚合函数可以满足表中记录的聚合运算。例如,需要计算学生成绩表中的平均成绩,可以使用avg()函数。group by关键字通常需要与聚合函数一起使用。

1.count()函数

count()函数,对于除“”以外的任何参数,返回所选择聚合中非null值的行的数目;对于参数“”,返回选择聚合所有行的数目,包含null值的行。没有where子句的count(*)是经过内部优化的,能够快速的返回表中所有的记录总数。

通过查询求18级学生的总数。
分析:求学生数即为求符合要求的记录行数,一般利用count()函数实现。

mysql> select count(studentno) as '18级学生数'
	-> from student
	-> where substring(studentno,1,2) ='18';

mysql查询平均价格 mysql查平均数_mysql查询平均价格



2.sum()函数和avg()函数

sum()函数可以求出表中某个字段取值的总和。avg()函数可以求出表中某个字段取值的平均值。

查询score表中学生的期末总成绩大于270分的学生学号、总成绩及平均成绩。

分析:先按照studentno对final值进行分组,再利用sum()函数和avg()函数分别期末总成绩和平均值,然后进行期末总成绩大于270分学生的筛选。

mysql> select studentno 学号, sum(final) 总分, avg(final) 平均分
	-> from score
	-> group by studentno
	-> having sum(final)>270
	-> order by studentno;

mysql查询平均价格 mysql查平均数_字段_02

3.max()函数和min()函数

max()函数可以求出表中某个字段取值的最大值。min()函数可以求出表中某个字段取值的最小值。

查询选修课程号为c05109号课程的期末最高分、最低分及之间相差的分数。
分析:分别利用max()和min()函数可以求得final的最大最小值

mysql> select max(final) 最高分, min(final) 最低分, 
	-> max(final)-min(final) as 分差
	-> from score
	-> where (courseno = 'c05109');

mysql查询平均价格 mysql查平均数_数据库_03



4.利用group by子句与with rollup一起进行统计

MySQL中的with rollup应用,可以在分组的统计数据的基础上再进行相同的总体统计。例如,对于成绩表中,查询某一门课的平均值和所有成绩的平均值,普通的group by 语句是不能实现的。

查询score表中每一门课的期末平均值和所有成绩的平均值
分析:如果使用有with rollup 子句的 group by语句,则可以实现这个要求。

mysql> select courseno 课程号,avg(final) 课程期末平均分
-> from score
-> group by courseno with  rollup;

mysql查询平均价格 mysql查平均数_数据库_04