day01-6多行处理函数

zhanglei 2022年05月29日 235次浏览

18、分组函数(多行处理函数)

多行处理函数的特点:输入多行,最终输出一行。

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

注意:
	分组函数在使用的时候必须先进行分组,然后才能用。
	如果你没有对数据进行分组,整张表默认为一组。

找出最高工资?
	mysql> select max(sal) from emp;
	+----------+
	| max(sal) |
	+----------+
	|  5000.00 |
	+----------+

找出最低工资?
	mysql> select min(sal) from emp;
	+----------+
	| min(sal) |
	+----------+
	|   800.00 |
	+----------+

计算工资和:
	mysql> select sum(sal) from emp;
	+----------+
	| sum(sal) |
	+----------+
	| 29025.00 |
	+----------+

计算平均工资:
	mysql> select avg(sal) from emp;
	+-------------+
	| avg(sal)    |
	+-------------+
	| 2073.214286 |
	+-------------+
	14个工资全部加起来,然后除以14。

计算员工数量?
	mysql> select count(ename) from emp;
	+--------------+
	| count(ename) |
	+--------------+
	|           14 |
	+--------------+

分组函数在使用的时候需要注意哪些?

	第一点:分组函数自动忽略NULL,你不需要提前对NULL进行处理。
	mysql> select sum(comm) from emp;
	+-----------+
	| sum(comm) |
	+-----------+
	|   2200.00 |
	+-----------+
	
	mysql> select count(comm) from emp;
	+-------------+
	| count(comm) |
	+-------------+
	|           4 |
	+-------------+
	mysql> select avg(comm) from emp;
	+------------+
	| avg(comm)  |
	+------------+
	| 550.000000 |
	+------------+

	第二点:分组函数中count(*)和count(具体字段)有什么区别?
		mysql> select count(*) from emp;
		+----------+
		| count(*) |
		+----------+
		|       14 |
		+----------+

		mysql> select count(comm) from emp;
		+-------------+
		| count(comm) |
		+-------------+
		|           4 |
		+-------------+

		count(具体字段):表示统计该字段下所有不为NULL的元素的总数。
		count(*):统计表当中的总行数。(只要有一行数据count则++)
					因为每一行记录不可能都为NULL,一行数据中有一列不为NULL,则这行数据就是有效的。
	
	第三点:分组函数不能够直接使用在where子句中。
		找出比最低工资高的员工信息。
			select ename,sal from emp where sal > min(sal);
			表面上没问题,运行一下?
				ERROR 1111 (HY000): Invalid use of group function
	?????????????????????????????????????????????????????????????????????
		说完分组查询(group by)之后就明白了了。

	第四点:所有的分组函数可以组合起来一起用。
		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 |
		+----------+----------+----------+-------------+----------+