一、什么是聚合函数
聚合函数是用来做简单的数据统计的。比如说统计一下员工表里边平均的工龄是多少年,员工表里边一共有多少条记录,这些都需要用到聚合函数。刚才说到了聚合函数能实现简单的数据统计,聚合函数又被称作是汇总函数,它能帮我们实现统计某个字段的最大值、最小值、平均值求和,还有记录的条数。如果我们不指定统计的范围,那么去核算函数统计的范围,就是整张数据表
聚合函数示例:
求公司公司员工的平均月收入是多少
select
avg(sal+ifnull(comm,0)) as "平均工资"
from t_emp
# as 给这列取别名
1.1 SUM函数
sum函数是对某个字段进行求和,所以该字段的数据类型必须得是数字类型
比如说下面这条sql语句,对于name这样的字符串类型的字段求和,最终的结果就是零
如果说对日期类型的字段求和,最终的结果就是日期的毫秒数相加。所以说正确的做法就是对数字类型进行求和
select sum(ename) from t_emp
问题1:查询10,20部门的员工表里边所有人的底薪加在一起是多少钱
select sum(sal)
from t_emp
where deptno in(10,20);
1.2 MAX函数
MAX 函数返回的结果是字段里边非空的最大值
问题2:查询10,20部门月收入最高的员工工资是多少钱
select
max(sal+ifnull(comm,0))
from t_emp
where deptno in(10,20)
问题3 :查询员工表中名字最长的员工
select
max(length(ename))
from t_emp;
LENGTH():统计字符的个数
1.3 MIN函数
MIN函数用于或者非空值的最小值
1.4 AVG函数
AVG函数用于或者非空值的平均值
1.5 COUNT函数
COUNT函数有两种用法。第一种是在参数里面写上*,而另一种用法是在这个参数里面写上具体的字段名称,那么它们之间的差别
比如第一个例子,这个from还是查询的员工表的数据,然后select子句里面写了一个count(*),那这个count星的意思就是查询员工表里面所有的这个记录的数量。不管你这个记录是不是有空值,都算上是有效的记录
第二种:count里边的参数换成了comm, 那么它在统计的时候,会把这个字段那些非空的记录都排除在外。所以统计出来的这个记录数量的就是那些佣金不为空的记录的数量。
select count(*),count(comm)
from t_emp
问题4:查询一下10和20部门里边,底薪超过2000元,并且工龄超过15年的这样的员工的人数
select
count(*)
from t_emp
where deptno in(10,20)
and sal>2000 and datediff(now(),hiredate)/365>15;