MySQL 聚合函数 和 分组查询(初级)

Posted zero澪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 聚合函数 和 分组查询(初级)相关的知识,希望对你有一定的参考价值。

聚合函数用于对一组值进行计算并返回一个汇总值,使用聚合函数可以统计记录行数、计算某个字段值的总和以及这些值的最大值、最小值和平均值等。

 函数名称

功能

 sum

返回选取的某列值的总和

 max

返回选取的某列的最大值

 min

返回选取的某列的最小值

 avg

返回选取的某列的平均值

 count

返回选取的某列或记录的行数

//计算所有线路总里程数。
select sum(miles) 线路总里程数 from line;

//计算公交二公司所属线路总里程数。
select sum(miles) 线路总里程数 from line where company=' 公交二公司 ';

//对所有线路的总站点数进行汇总。
select sum(number) 线路总站点数 from line;
//获取所有线路里程的最大值和最小值。
select max(miles) 最长线路里程 , min(miles) 最短线路里程 from line;

//查询年龄最大的公交司机的出生年月。
select min(birthday) 最年长司机生日 ,
ceil(datediff(curdate(),min(birthday))/365) 该司机年龄 from driver;

使用 group by 子句可以将数据划分到不同的组中,实现对记录的分组查询。group by 从英文字面的意义上可以理解为“根据(by)一定的规则进行分组(group)”,该子句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对这若干个小区域进行统计汇总。

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

group by 子句通常与聚合函数同时使用,如 max()、min()、count()、sum() 和 avg()。 

 having 子句和 where 子句均用于过滤数据,两者的区别在于:where 子句对结果集进行过滤筛选,而 having 子句则对分组的结果进行筛选

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

count 和 sum 函数的区别
sum 函数是对符合条件的记录的数值列求和,count 函数的值是满足查询条件的结果(或记录)个数。count(column) 用于统计 column 列不为 null 的记录个数。
如何对查询结果进行过滤之后再分组统计:
先使用 where 子句表达式对查询结果进行过滤筛选;然后,再使用 group by 子句对 where 子句的输出进行分组统计。
having 子句的用法:
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据。having 子句的位置放在 group by 子句之后,常包含聚合函数。

 

以上是关于MySQL 聚合函数 和 分组查询(初级)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 聚合函数 和 分组查询(初级)

十MySQL 聚合函数分组查询及过滤分组

十MySQL 聚合函数分组查询及过滤分组

MySQL查询相关(初级)(全文重点)

mysql分组查询和排序

如何使用聚合函数在 MySQL 查询中获取分组记录的第一条和最后一条记录?