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

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睿思达DBA_WGX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值