去除重复数据(distinct)
#(1)查询员工的所有部门
select distinct deptno from emp;
9.5.2 ifnull
##(2)查询员工的薪资(工资+奖金)
##问题:任何数据+ null ->1800
ifnull(A,B):如果A是null,使用B的值,如果A不是null,就是使用A
select
sal,comm,sal + ifnull(comm,0)
from
emp;
9.5.3别名 as
select
sal,comm,sal + ifnull(comm,0) as money
from
emp;
##as 关键字可以省略
select
ename name,sal,comm,sal+ifnull(comm,0) as money
from
emp;
9.5.4排序
##排序order by
##升序
##(1)查询所有的学生信息,根据年龄进行升序排序
select * from stu order by age asc;
##降序
##(2)查询所有的学生信息,根据年龄进行降序
select * from stu order by age desc;
##(2)查询所有的学生信息,根据名字进行升序排序
select * from stu order by sname asc;
##(3)查询所有员工信息,根据工资进行排序,如果工资相同按照员工号升序
select * from emp order by sal desc,empno asc;
9.6 聚合函数
MySQL 系统提供了很多的函数
Count:统计个数,次数,null不统计
Max:最大值
Min:最小值
Sum:求和
Avg:平均值
Round:四舍五入
9.6.1 count函数
(1)查询emp表中记录数
count():不会忽略null的值。
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+infull(comm,0))>2500;
(5)查询有提成的人数、有上一级领导的人数。
select count(comm),count(mgr) from emp;
9.6.2 sum 求和,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;
##(3)计算员工的平均工资
select avg(sal) ,avg(comm) from emp;
±------------±-----------+
| avg(sal) | avg(comm) |
±------------±-----------+
| 2073.214286 | 550.000000 |
±------------±-----------+
#(4)平均工资,保留 2 位小数
select round(avg(sal),0) ,avg(comm) from emp;
9.6.3 max 和 min
2021
##max 最大值和 min 最小值
##查询员工表中,工资最高的、最低的
select max(sal) max_sal,min(sal) min_sal from emp;
9.6.4 分段函数 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;