分组函数就是需要分组后才能使用的函数,若默认没有写分组(group up),那么就会默认把该表里面的所有数据行当成一组
书写分组函数的位置: SELECT子句、子查询语句(括号里头)、GROUP BY子句、HAVING子句、ORDER BY子句
分组函数又称为多行函数,指的是它要同时对多行操作,然后只返回一行的数据
而单行函数就是每次只对一行操作,操作一行完成后,每次就返回一行的数据,例如 ifnull(可能有null值的字段,0);
所有的分组函数都会剔除null然后再进行汇总查询/计算
对数据进行查询汇总/计算
记录表中有多少条数据
若传入的实参是*,则记录该表一共有多少条数据(含null值)
若传入的实参是字段,则记录表中有多少条有效数据(不含null值)
SELECT count(*)
FROM 表名;
SELECT count(*)
FROM student01;
/*
记录该表一共有多少条数据行,这样的结果里面是包含null值的
*
/
SELECT count(字段)
FROM 表名;
/*
若传入的字段是被PRIMARY KEY修饰的字段,那么也可以得到该表一共有多少条数据(某些字段含null值)
一个数据表一定会有一个主键的,所以这个方案是可行的
若传入的字段没有被PRIMARY KEY修饰,且该字段有null值,那么可以得到该表一共有多少条有效数据(不含null)
*/
SELECT count(name)
FROM student01;
SELECT count(age)
FROM student01;
计算当前数据表中所有非空数据的和
本质就是求和,只不过是剔除了字段值为null的数据
因为null值参与运算的结果永远都是null,不会有第二种可能性的
SELECT sum(需要求和的字段)
FROM 表名;
/*
需要求和的字段的数据类型为数值型
*/
SELECT sum(age)
FROM student01;
计算当前数据表中所有非空数据的平均值
本质就是求平均值,只不过是剔除了字段值为null的数据
因为null值参与运算的结果永远都是null,不会有第二种可能性的
SELECT AVG(需要求平均数的字段)
FROM 表名;
/*
需要求平均数的字段的数据类型为数值型
*/
SELECT AVG(age)
FROM student01;
找到当前数据表中所有非空数据中的最大值
本质就是查找最大值,只不过是剔除了字段值为null的数据
null值是不会参与查找的
SELECT MAX(需要找到最大值的字段)
FROM 表名;
/*
需要找到最大值的字段应该为数值型
*/
SELECT MAX(age)
FROM student01;
找到当前数据表中所有非空数据中的最小值
本质就是查找最小值,只不过是剔除了字段值为null的数据
null值是不会参与查找的
SELECT MIN(需要找到最小值的字段)
FROM 表名;
/*
需要找到最小值的字段应该为数值型
*/
SELECT MIN(age)
FROM student01;