首页 理论教育 MySQL数据库聚合函数的实例应用

MySQL数据库聚合函数的实例应用

时间:2023-11-22 理论教育 版权反馈
【摘要】:1.聚合函数聚合函数常常用于对一组值进行计算,然后返回单个值。表5.4列出了一些常用的聚合函数。

MySQL数据库聚合函数的实例应用

聚合函数用于对一组值进行计算并返回一个汇总值,常用的聚合函数有累加求和sum()函数、平均值avg()函数、统计记录的行数count()函数、最大值max()函数和最小值min()函数等。

使用count()对NULL值统计时,count()函数将忽略NULL值。sum()函数、avg()函数、max()以及min()函数等统计函数,统计数据时也将忽略NULL值。

1.聚合函数

聚合函数常常用于对一组值进行计算,然后返回单个值。聚合函数通常与GROUP BY子句一起使用。如果SELECT语句中有一个GROUP BY子句,则这个聚合函数对所有列起作用,如果没有,则SELECT语句只产生一行作为结果。聚合函数一般用于SELECT语句选择列的后面。表5.4列出了一些常用的聚合函数。

表5.4 聚合函数表

(1)COUNT()函数。

最经常使用的聚合函数是COUNT()函数,用于统计组中满足条件的行数或总行数,返回SELECT语句检索到的行中非NULL值的数目,若找不到匹配的行,则返回0。

语法格式为:

COUNT({ [ALL | DISTINCT] expression } | *)

ALL表示对所有值进行运算,DISTINCT表示除去重复值,默认为ALL。使用COUNT(*)时将返回检索行的总数目,不论其是否包含NULL值。

【例5.15】求学生的总人数。

SELECT COUNT(*)AS '学生总数'

FROM XSB;

查询结果如图5.12所示。

图5.12 count()函数统计查询

(2)MAX()和MIN()函数。

MAX()和MIN()函数分别用于求表达式中所有值项的最大值与最小值,其语法格式为:

MAX / MIN([ALL | DISTINCT] expression)

其中,expression是常量、列、函数或表达式。

【例5.16】求选修课程号为101的课程的学生的最高分和最低分。

SELECT MAX(成绩)as Max(成绩),MIN(成绩)as MIN(成绩)

FROM CJB

WHERE 课程号= '101';

查询结果如图5.13所示。

图5.13 MAX()和MIN()函数查询

(3)SUM()函数和AVG()函数。

SUM()和AVG()函数分别用于求表达式中所有值项的总和与平均值,其语法格式为:

SUM / AVG([ALL | DISTINCT] expression)(www.xing528.com)

【例5.17】求学号081101的学生所学课程的总成绩。

SELECT SUM(成绩)AS '课程总成绩'

FROM CJB

WHERE 学号 = '081101';

查询结果如图5.14所示。

图5.14 sum()函数查询

【例5.18】求课程号为101的课程的平均成绩。

SELECT AVG(成绩)AS '课程101平均成绩'

FROM CJB

WHERE 课程号 = '101';

查询结果如图5.15所示。

图5.15 avg()函数查询

2.group by子句与聚合函数

group by子句通常与聚合函数一起使用。

group by子句的语法格式如下:

group by 字段列表 [having条件表达式] [with rollup]

例如,统计每一个班的学生人数,统计每个学生已经选修多少门课程,该生的最高分、最低分、总分及平均成绩等。

group_concat()函数的功能是将集合中的字符串连接起来,与字符串连接函数concat()的功能相似。

【例5.19】如下面SQL语句中的group_concat()函数以及concat()函数负责将集合中('java','程序','设计')三个字符串连接起来。

select group_concat('java','程序','设计'),

concat('java','程序','设计');

执行结果如图5.16所示。

图5.16 group_concat()函数以及concat()函数查询比较

另外,group_concat()函数还可以按照分组字段,将另一个字段的值(NULL值除外)使用逗号连接起来。concat()函数却没有提供这样的功能。

3.group by子句与with rollup选项

group by子句将结果集分为若干个组,使用聚合函数可以对每个组内的数据进行信息统计,有时需要对各个组进行汇总运算,则需要在每个分组后加上一条汇总记录,这个任务可以通过with rollup选项实现。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈