本文共 1227 字,大约阅读时间需要 4 分钟。
count | 取得记录数 |
sum | 求和 |
avg | 取平均 |
max | 取最大的数 |
min | 取最小的数 |
注意:分组函数自动忽略空值,不需要手动的加where条件排除空值。
select count(*) from emp where xxx; 符合条件的所有记录总数。
select count(comm) from emp; comm这个字段中不为空的元素总数。
注意:分组函数不能直接使用在where关键字后面。
mysql> select ename,sal from emp where sal > avg(sal);
ERROR 1111 (HY000): Invalid use of group function
select count(*) from emp; |
Count(*)表示取得所有记录,忽略null,为null的值也会取得
2.取得津贴不为null员工数
select count(comm) from emp; |
采用count(字段名称),不会取得为null的记录
3.取得工作岗位的个数
select count(distinct job ) from emp; #distinct 不同种类的
|
select sum(sal) from emp; |
select sum(comm) from emp; |
null会被忽略
2.取得薪水的合计(sal+comm)
select sum(sal+comm) from emp; |
从以上结果来看,不正确,原因在于comm字段有null值,所以无法计算,sum会忽略掉不计算有null的行,正确的做法是将comm字段转换成0
select sum(sal+IFNULL(comm, 0)) from emp; |
取得某一列的平均值
select avg(sal) from emp; |
取得某个一列的最大值
select max(sal) from emp; |
2.取得最晚入职得员工
select max(str_to_date (hiredate, '%Y-%m-%d')) from emp; |
取得某个一列的最小值
select min(sal) from emp; |
select min(str_to_date(hiredate, '%Y-%m-%d')) from emp; |
可以将这些聚合函数都放到select中一起使用
select count(*),sum(sal),avg(sal),max(sal),min(sal) from emp; |
转载地址:http://ryoof.baihongyu.com/