用MySQL解析SQL语句里面的分组函数(聚合函数)
1 前提
分组函数就是需要分组后才能使用的函数,若默认没有写分组(group up),那么就会默认把该表里面的所有数据行当成一组
书写分组函数的位置: SELECT子句、子查询语句(括号里头)、GROUP BY子句、HAVING子句、ORDER BY子句
分组函数又称为多行函数,指的是它要同时对多行操作,然后只返回一行的数据
而单行函数就是每次只对一行操作,操作一行完成后,每次就返回一行的数据,例如 ifnull(可能有null值的字段,0);
所有的分组函数都会剔除null然后再进行汇总查询/计算
2 作用
对数据进行查询汇总/计算
3.1 COUNT函数
3.1.1 核心点
记录表中有多少条数据
若传入的实参是*,则记录该表一共有多少条数据(含null值)
若传入的实参是字段,则记录表中有多少条有效数据(不含null值)
3.1.2 传入的实参是*
a 语法
SELECT count(*)
FROM 表名;
b 示例sql语句
SELECT count(*)
FROM student01;
/*
记录该表一共有多少条数据行,这样的结果里面是包含null值的
*
/
c 示例sql语句运行截图
3.1.3 传入的实参是字段
a 语法
SELECT count(字段)
FROM 表名;
/*
若传入的字段是被PRIMARY KEY修饰的字段,那么也可以得到该表一共有多少条数据(某些字段含null值)
一个数据表一定会有一个主键的,所以这个方案是可行的
若传入的字段没有被PRIMARY KEY修饰,且该字段有null值,那么可以得到该表一共有多少条有效数据(不含null)
*/
b 查询所有数据行(某些字段有null值)的示例sql语句
SELECT count(name)
FROM student01;
c 查询所有数据行(某些字段有null值)的示例sql语句运行截图
d 查询有效数据行(该字段不含null)的示例sql语句
SELECT count(age)
FROM student01;
f 查询有效数据行(该字段不含null)的示例sql语句运行截图
3.2 SUM函数
3.2.1 核心
计算当前数据表中所有非空数据的和
本质就是求和,只不过是剔除了字段值为null的数据
因为null值参与运算的结果永远都是null,不会有第二种可能性的
3.2.2 语法
SELECT sum(需要求和的字段)
FROM 表名;
/*
需要求和的字段的数据类型为数值型
*/
3.2.3 示例sql语句
SELECT sum(age)
FROM student01;
3.2.4 示例sql语句运行截图
3.3 AVG函数
3.3.1 核心
计算当前数据表中所有非空数据的平均值
本质就是求平均值,只不过是剔除了字段值为null的数据
因为null值参与运算的结果永远都是null,不会有第二种可能性的
3.3.2 语法
SELECT AVG(需要求平均数的字段)
FROM 表名;
/*
需要求平均数的字段的数据类型为数值型
*/
3.3.3 示例sql语句
SELECT AVG(age)
FROM student01;
3.3.4 示例sql语句运行截图
3.4 MAX函数
3.4.1 核心
找到当前数据表中所有非空数据中的最大值
本质就是查找最大值,只不过是剔除了字段值为null的数据
null值是不会参与查找的
3.4.2 语法
SELECT MAX(需要找到最大值的字段)
FROM 表名;
/*
需要找到最大值的字段应该为数值型
*/
3.4.3 示例sql语句
SELECT MAX(age)
FROM student01;
3.4.4 示例sql语句运行截图
3.5 MIN函数
3.5.1 核心
找到当前数据表中所有非空数据中的最小值
本质就是查找最小值,只不过是剔除了字段值为null的数据
null值是不会参与查找的
3.5.2 语法
SELECT MIN(需要找到最小值的字段)
FROM 表名;
/*
需要找到最小值的字段应该为数值型
*/
3.5.3 示例sql语句
SELECT MIN(age)
FROM student01;