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

注意:如果count中填的是表达式的话,要加上 or null, 因为 Mysql 中 count() 函数的一般用法是统计字段非空的记录数,利用这个特点来进行条件统计,如果字段是 NULL 就不会统计,但是 false 是会被统计到的

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

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

​ mysql> select sum(comm) from emp;

	+-----------+
	| sum(comm) |
	+-----------+
	|   2200.00 |
	+-----------+

分组函数中count(*) 和 count(具体字段) 有什么区别?

count(具体字段):表示统计该字段下所有不为NULL的元素的总数。 count(*):统计表当中的总行数。(只要有一行数据count则++) 每一行记录不可能都为NULL(不存在一行全为null的表),一行数据中有一列不为NULL,则这行数据就是有效的。

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

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

找出比最低工资高的员工信息。 select ename,sal from emp where sal > min(sal); 表面上意思感觉是没问题,运行一下发现: ERROR 1111 (HY000): Invalid use of group function ????????????????????????????????????????????????????????????????????? 分组函数在使用的时候必须先进行分组,而分组的group by 执行顺序是在where后的,也就是让分组函数 min 先于分组了,所以会报错

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

​ 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 |