MySQL讲义第28讲——select 查询之聚合函数

it2023-01-04  81

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)
最新回复(0)