动力节点MySQL34题精炼(带答案解析)(中)

14、列出所有员工及领导的姓名

SELECT a.ename,b.ename as "领导姓名"
from emp a left join emp b
on a.mgr=b.empno
注意:汉字用双引号,不能用单引号,不然报错。

15、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
SELECT a.empno,a.ename,d.dname
from emp a
JOIN emp b
on a.mgr=b.empno
join dept d
on a.deptno=d.deptno
where a.hiredate<b.hiredate

16、 列出部门名称和这些部门的员工信息, 同时列出那些没有员工的部门
SELECT b.dname,a.*
from emp a
JOIN dept b
on a.deptno=b.deptno

17、列出至少有 5 个员工的所有部门
SELECT deptno
from emp
GROUP BY deptno
HAVING count(*)>=5

having必须和group by一起使用

18、列出薪金比"SMITH" 多的所有员工信息
SELECT *
FROM emp
WHERE sal>
(SELECT sal
from emp
where ename="SMITH")

19、 列出所有"CLERK"( 办事员) 的姓名及其部门名称, 部门的人数
SELECT e.ename,d.dname,e.deptno
FROM emp e
JOIN dept d
on e.deptno=d.deptno
WHERE e.job="CLERK"

SELECT deptno,count(*) as deptnum
from emp group by deptno

SELECT t1.ename,t1.dname,t2.deptnum
FROM(
SELECT e.ename,d.dname,e.deptno
FROM emp e
JOIN dept d
on e.deptno=d.deptno
WHERE e.job="CLERK") t1
join(
SELECT deptno,count(*) as deptnum
from emp group by deptno) t2
WHERE t1.deptno=t2.deptno

20、列出最低薪金大于 1500 的各种工作及从事此工作的全部雇员人数
SELECT job,count(*)
from emp
group by job
HAVING min(sal)>1500 
21、列出在部门"SALES"< 销售部> 工作的员工的姓名, 假定不知道销售部的部门编号.
SELECT ename from emp where deptno in(select deptno
from dept
WHERE dname="sales")

字符串用英文单引号或双引号括着

22、列出薪金高于公司平均薪金的所有员工, 所在部门, 上级领导, 雇员的工资等级.
select e.ename,d.dname,l.ename,s.grade
FROM emp e
join dept d  on e.deptno=d.deptno
LEFT join emp l on e.mgr=l.empno
join salgrade s on  e.sal BETWEEN s.losal and s.hisal
where e.sal>(SELECT avg(sal) from emp)

Join 等同于 inner join : 表示两个表都必须存在的,某一个字段为null这条数据都会被过滤掉
left join 表示以左边的表为基准,不管你右边的表有没有都显示,右边为null的数据条也会展示出来

23、 列出与"SCOTT" 从事相同工作的所有员工及部门名称

SELECT e.ename,d.dname
FROM emp e
left join dept d
on e.deptno=d.deptno
where e.job in( SELECT job from emp WHERE ename="SCOTT")
and ename <>"SCOTT"(除去这个人哦)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值