MySQL 第七章 分组函数

七、分组函数

7.1 多行处理函数概述

分组函数又被称为多行处理函数。

特点:输入多行,最终输出一行。

count 	计数
sum		求和
avg		平均值
max		最大值
min		最小值

注意:

分组函数在使用的时候必须先进行分组,然后才能用。

如果你没有对数据进行分组,整张表默认为一组。

7.2 示例

找出最高工资?

mysql> select max(sal) from emp;
+----------+
| max(sal) |
+----------+
|  5000.00 |
+----------+
1 row in set (0.00 sec)

找出最低工资:

mysql> select min(sal) from emp;
+----------+
| min(sal) |
+----------+
|   800.00 |
+----------+
1 row in set (0.00 sec)

计算工资和:

mysql> select sum(sal) from emp;
+----------+
| sum(sal) |
+----------+
| 29025.00 |
+----------+
1 row in set (0.00 sec)

计算平均工资:

mysql> select avg(sal) from emp;
+-------------+
| avg(sal)    |
+-------------+
| 2073.214286 |
+-------------+
1 row in set (0.00 sec)

计算员工数量:

mysql> select count(ename) from emp;
+--------------+
| count(ename) |
+--------------+
|           14 |
+--------------+
1 row in set (0.01 sec)

7.3 注意点

7.3.1 分组函数会自动忽略NULL,不需要提前对NULL进行处理

mysql> select sum(comm) from emp;
+-----------+
| sum(comm) |
+-----------+
|   2200.00 |
+-----------+
1 row in set (0.00 sec)

7.3.2 分组函数中count(*) 和 count(具体字段)的区别

count(具体字段):表示统计该字段下所有不为NULL的元素总和。

count(*):统计表当中的总行数。(只要有一行数据count就++,因为每一行记录不可能都为NULL,一行数据中有一列不为NULL,则这行数就是有效的。)

# count(具体字段)
mysql> select count(comm) from emp;
+-------------+
| count(comm) |
+-------------+
|           4 |
+-------------+
1 row in set (0.00 sec)

mysql> select comm from emp;
+---------+
| comm    |
+---------+
|    NULL |
|  300.00 |
|  500.00 |
|    NULL |
| 1400.00 |
|    NULL |
|    NULL |
|    NULL |
|    NULL |
|    0.00 |
|    NULL |
|    NULL |
|    NULL |
|    NULL |
+---------+
14 rows in set (0.00 sec)

# count(*)
mysql> select count(*) from emp;
+----------+
| count(*) |
+----------+
|       14 |
+----------+
1 row in set (0.00 sec)

7.3.3 分组函数不能够直接使用在where子句中

找出比最低工资高的员工信息:

# 下面语句表面上没问题,一运行就报错
mysql> select ename, sal from emp where sal > min(sal);
ERROR 1111 (HY000): Invalid use of group function

7.3.4 所有的分组函数可以组合起来一起用

mysql> select sum(sal), min(sal), max(sal), avg(sal), count(*) from emp;
+----------+----------+----------+-------------+----------+
| sum(sal) | min(sal) | max(sal) | avg(sal)    | count(*) |
+----------+----------+----------+-------------+----------+
| 29025.00 |   800.00 |  5000.00 | 2073.214286 |       14 |
+----------+----------+----------+-------------+----------+
1 row in set (0.00 sec)

Guess you like

Origin blog.csdn.net/qq_45893475/article/details/121302230