MySQL 分组聚合函数使用,直接上结果案例

MySQL 分组聚合函数常被拿来搭配用,但其实这是两个概念,分组、聚合函数。分享这篇文章是因为今天实现某个需求时,因为分组聚合的使用,卡住没做出来。所以用个实例表回顾一些知识。

因内容比较简单,我直接分享运行 SQL 后的结果,关键部分会做说明

聚合函数

常用的聚合函数有这几个:

  • avg
  • max
  • min
  • sum
  • count

以我理解,它们有两个特征:

  • 对表的一列数据操作
  • 每一组操作完只返回一个结果

我用如下表数据举例

count:计算一列数据所有数量

很明显,count 不会将字段的 Null 统计进去

max:获取一列数据中最大的值

这个处理的对象数据有字符串(中文、英文)、数值、日期时间。

如果是中文,将它转成拼音,按照 a-z 顺序比较,z 最大。如果前面字母一样,继续比较下一位。如果是英文,直接比较 a-z

如果是数字型字符串,按照顺序,从首字符开始比较。

上面几张图的结果都只有一个,而且都是对一列数据操作,是不是挺符合上面两个特征。

分组

分组就是按照 group by 后的字段划分,将相同的合并,异同的划分,分成一块一块

使用 group by ,后面的字段可以比 select 多,但 select 中出现的字段,一定要在 group by 中

数据一样的合并了,所以少了一行,select 可以用常量

也可以用聚合函数,所以它两经常结合一起使用,还记得上面聚合函数的两特征吗?结果只有一行,这里出现多行,因为分组了,所以 SQL 语句的执行顺序也可以看出来,先 group by 再 select

注意对比上下两张图 SQL 的区别

这是错的,还是执行顺序,group by 中怎么能用别名呢?select 是后面执行的,别名还没产生,group by 没法用,这里没报错还成功执行,因为 MySQL 特殊性,但这个 SQL 是错的

 

本文由老郭种树原创,转载请注明:https://guozh.net/mysql-grouping-aggregation-function/

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注