Mysql 中系统提供了很多函数
Count:统计个数,次数,null不统计
Max:最大值
Min:最小值
Sum:求和
Avg:平均值
Round:四舍五入
使用聚合函数时一般都会给别名
9.6.1 count函数
##count函数
count(*):不会忽略null的值.
#(1)查询emp表中记录数
Select count(*) from emp;
##(2)统计emp表中,有提成的人数
##count(具体字段),null值会忽略。
Select count(comm) from emp;
##(3)统计工资大于2500的员工人数。
Select count(*) from emp where sal > 2500;
##(4)薪资(工资➕奖金)大于2500的员工的人数。
Select count(*) from emp where sal+ifnull(comm,0) > 2500;
##(5)查询有提成的人数和有上一级领导的人数。
Select count(comm),count(mgr) from emp;
9.6.2sum,avg,round函数
##sum,avg,round
#(1)查询所有员工的工资的总和
select sum(sal) from emp;
#(2)查询提成的总和、工资的总和
select sum(sal),sum(comm) from emp;
#(3)查询提成的总和、工资的总和、薪资总和
select sum(sal),sum(comm),sum(sal+ifnull(comm,0))money from emp;
#(4)计算员工的平均工资,平均工资 保留两位小数
select round (avg(sal),2),avg(comm)from emp;
9.6.3max和min函数
##(1)查询员工表中,工资最高的和工资最低的。
select max(sal) max_sal,min(sal) min_sal from emp;
9.6.4分段函数 case
成绩的处理:具体成绩—》五个成绩。
优>90
良>80
中>70
及格>60
差<60
##分段函数case
#员工表中,根据薪资不一样,给不一样的评论
>4000,NB666
>3000,NB66
>2000,NB6
<2000,ZZ
select
sal,
case
when sal >4000 then "NB666"
when sal >3000 then "NB66"
when sal >2000 then "NB6"
else"ZZ"
end as pj
from emp;
9.6.5字符串的截取
Left(a,4)从左边截取4个字符
Right(a,4)从右边截取4个字符
##需求:根据入职时间打不同星
入职时间>40年 ,3星
入职时间>39年 ,2星
<39年 ,1星
##截取
1987-04-19 -》1987
select right("1987-04-19",4)
###(1)获取员工的入职年份
select ename,hiredate,left(hiredate,4) from emp;
###(2)获取员工的入职工龄
select ename,hiredate,2021 - left(hiredate,4) from emp;