MySQL讲义第28讲——select 查询之聚合函数
文章目录
聚合函数又称为统计函数,可以对查询结果进行统计和汇总,对一组值进行计算并返回一个单一的值。聚合函数经常与 GROUP BY 子句一同使用。常用的聚合函数包括SUM、COUNT、AVG、MAX 和 MIN,实现对表中数据的统计(求和、计数、平均值、最大值和最小值等)。
一、count( ) 函数
count( ) 函数统计记录数量并返回,常与 GROUP BY 子句连用。格式如下:
count(distinct *|字段名|表达式)
--使用count(*)时不忽略 NULL 值,使用 count(字段|表达式) 时自动忽略 NULL 值
举例:
1、统计男生人数
mysql> SELECT
-> count(*) as 男生人数
-> FROM
-> stu
-> WHERE
-> gender='男';
+--------------+
| 男生人数 |
+--------------+
| 6 |
+--------------+
1 row in set (0.17 sec)
--也可以不使用 WHERE 子句,在 count()函数中使用表达式
mysql> SELECT
-> count(if(gender = '男',1,null)) as 男生人数
-> FROM
-> stu;
+--------------+
| 男生人数 |
+--------------+
| 6 |
+--------------+
1 row in set (0.00 sec)
2、统计身高超过 175 的学生人数
mysql> SELECT
-> count(*) as 人数
-> FROM
-> stu
-> WHERE
-> height >= 175;
+--------+
| 人数 |
+--------+
| 4 |
+--------+
1 row in set (0.02 sec)
3、统计有学生的系的个数
mysql> SELECT
-> count(distinct dept_id) as 系的个数
-> FROM
-> stu;
+--------------+
| 系的个数 |
+--------------+
| 3 |
+--------------+
1 row in set (0.03 sec)
二、sum( ) 函数
SUM( ) 函数返回一组值的和,忽略 NULL 值。如果找不到匹配行,返回 NULL 值。常与 GROUP BY 子句连用。格式如下:
sum(字段|表达式)
举例:
1、统计所有员工的工资总额
mysql> SELECT
-> sum(salary) as 工资总额
-> FROM
-> emp;
+--------------+
| 工资总额 |
+--------------+
| 84500.00 |
+--------------+
1 row in set (0.00 sec)
2、统计女生人数
mysql> SELECT
-> sum(if(gender = '女',1,0)) as 女生人数
-> FROM
-> stu;
+--------------+
| 女生人数 |
+--------------+
| 5 |
+--------------+
1 row in set (0.00 sec)
3、统计工资超过 10000 元的员工的工资总额
mysql> SELECT
-> sum(salary) as 工资总额
-> FROM
-> emp
-> WHERE
-> salary > 10000;
+--------------+
| 工资总额 |
+--------------+
| NULL |
+--------------+
1 row in set (0.01 sec)
三、avg( ) 函数
AVG( ) 函数计算一组值的平均值。 计算时忽略 NULL 值。常与 GROUP BY 子句连用。格式如下:
avg(字段|表达式)
举例:
1、查询所有员工的平均工资
mysql> SELECT
-> avg(salary) as 平均工资
-> FROM
-> emp;
+--------------+
| 平均工资 |
+--------------+
| 6500.000000 |
+--------------+
1 row in set (0.00 sec)
2、查询男生的平均身高
mysql> SELECT
-> avg(height) as 平均身高
-> FROM
-> stu
-> WHERE
-> gender = '男';
+--------------+
| 平均身高 |
+--------------+
| 176.50000 |
+--------------+
1 row in set (0.00 sec)
--也可以使用表达式进行计算
mysql> SELECT
-> avg(if(gender = '男',height,null)) as 平均身高
-> FROM
-> stu;
+--------------+
| 平均身高 |
+--------------+
| 176.50000 |
+--------------+
1 row in set (0.00 sec)
四、max( ) 函数
max( ) 函数返回一组值中的最大值。计算时忽略 NULL 值。常与 GROUP BY 子句连用。格式如下:
max(字段|表达式)
举例:
1、查询所有员工的最高工资
mysql> SELECT
-> max(salary) as 最高工资
-> FROM
-> emp;
+--------------+
| 最高工资 |
+--------------+
| 9200.00 |
+--------------+
1 row in set (0.00 sec)
2、查询女生身高的最大值
mysql> SELECT
-> max(height) as 最大身高
-> FROM
-> stu
-> WHERE
-> gender = '女';
+--------------+
| 最大身高 |
+--------------+
| 170.0 |
+--------------+
1 row in set (0.00 sec)
--也可以使用表达式进行计算
mysql> SELECT
-> max(if(gender = '女',height,null)) as 最大身高
-> FROM
-> stu;
+--------------+
| 最大身高 |
+--------------+
| 170.0 |
+--------------+
1 row in set (0.00 sec)
五、min( ) 函数
min( ) 函数返回一组值中的最小值。计算时忽略 NULL 值。常与 GROUP BY 子句连用。格式如下:
min(字段|表达式)
举例:
1、查询所有员工的最低工资
mysql> SELECT
-> min(salary) as 最高工资
-> FROM
-> emp;
+--------------+
| 最高工资 |
+--------------+
| 4700.00 |
+--------------+
1 row in set (0.00 sec)
2、查询女生身高的最小值
mysql> SELECT
-> min(height) as 最低身高
-> FROM
-> stu
-> WHERE
-> gender = '女';
+--------------+
| 最低身高 |
+--------------+
| 160.0 |
+--------------+
1 row in set (0.00 sec)
--也可以使用表达式进行计算
mysql> SELECT
-> min(if(gender = '女',height,null)) as 最大身高
-> FROM
-> stu;
+--------------+
| 最大身高 |
+--------------+
| 160.0 |
+--------------+
1 row in set (0.00 sec)