分段函数

##员工表中,根据薪资不一样,给不一样的评论
>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;

##需求:根据入职时间打不同星
入职时间>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;

select hiredate,(2021 - left(hiredate,4)) as y from emp;
select
hiredate,(2021 - left(hiredate,4)) as y,
case
when(2021 - left(hiredate,4)) >40 then "***"
when(2021 - left(hiredate,4)) >39 then "**"
else "*"
end as star
from emp;
##(1)统计各个部门的人数
部门的id 人数 平均工资
10 6 600
20 3 300
30 4 400
select
deptno,count(*),avg(sal)
from
emp
group by
deptno;
##(2)统计各个部门的平均工资
部门的id 平均工资
10 600
20 300
30 400
部门的id 岗位 人数
1 java开发 10
1 前端开发 6
2 出纳 2
2 会计 4

select
deptno,job,count(*)
from
emp
group by
deptno,job;

##having
需求:统计平均工资超过2000的部门。
(1)算出各个部门的平均工资。
(2)过滤,只留下超过2000的。

select
deptno,avg(sal) as sal_avg
from
emp
group by
deptno
having
sal_avg > 2000;

需求:统计30部门,平均工资超过1000的岗位。
select
job,avg(sal) as sal_avg
from
emp
where
deptno = 30
group by
job
having
sal_avg > 1000;

posted @ 2021-04-19 09:00  共你、  阅读(243)  评论(0)    收藏  举报