MySQL-老杜 练习题(34道)(二)

28、列出所有部门的详细信息和人数
我的解法:为什么外连接,deptno=40的人数为null?

select 
	d.deptno, d.dname, d.loc, count(e.ename)
from 
	emp e 
right JOIN
	dept d 
on 
	e. deptno=d.DEPTNO
group by 
	d.deptno, d.dname ,d.loc;

 

29、列出各种工作的最低工资及从事此工作的雇员姓名


-- 29、列出各种工作的最低工资及从事此工作的雇员姓名
select 
	job,min(sal) as minsal
from 
	emp 
GROUP BY
	job;
-- e 表与上面的的t秒连接。
select e.ENAME ,e.sal
from 	
	emp e 
join 
	(select 
		job,min(sal) as minsal
	from 
		emp 
	GROUP BY
		job) t 
on 
	e.sal =t.minsal and e.job=t.job;

 

 

30、列出各个部门的 MANAGER( 领导) 的最低薪金

select 
	min(sal),e.deptno
from 
 emp e 
where 
	job='MANAGER'
group by 
	deptno ;

31、列出所有员工的 年工资, 按 年薪从低到高排序

SELECT  
	e.ename, 12*e.sal as yearsal
from 
	emp e 
order by 
	yearsal asc;

 

32、求出员工领导的薪水超过3000的员工名称与领导

select 
	a.ename 'employee' , b.ename 'leader'
from 
	emp a 
join 
	emp b 
on 
	a.mgr=b.empno
where 
	b.sal>3000;

 33、求出部门名称中, 带’S’字符的部门员工的工资合计、部门人数

select 
	d. deptno, d.dname,d.loc,ifnull(count(e.deptno),0) as count ,ifnull(sum(e.sal), 0) as sumsal
from 
	emp e 
right join 
	dept d 
on 
	e.deptno =d.deptno
where 
	d.dname like '%S%'
GROUP BY 
	d. deptno, d.dname,d.loc

 

 34、给任职日期超过 30 年的员工加薪 10%.

update 
	emp 
set 
	sal =sal*1.1 
WHERE 
	TIMESTAMPDIFF(YEAR,HIREDATE,now())>40;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值