33道数据库题目

33道数据库题目

准备三张表

  1. emp–员工表
    p1
  2. dept–部门表
    p2
  3. salgrade–工资等级表
    p3

题目

  1. 取得每个部门最高薪水的人员名称
    (方法1)
select ename, sal, deptno from emp where sal in (select max(sal) from emp group by deptno);

p4
(方法2)

select e.ename, e.sal, e.deptno from emp e join (select deptno, max(sal) max_sal from emp group by deptno) t on e.deptno = t.deptno where e.sal = t.max_sal;

p5

  1. 哪些人的薪水在部门的平均薪水之上
select e.ename, e.sal, e.deptno from emp e join (select avg(sal) avg_sal, deptno from emp group by deptno) t on e.deptno = t.deptno where e.sal > t.avg_sal;

p6

  1. 取得部门中(所有人的)平均的薪水等级
select e.deptno, avg(grade) from emp e join salgrade s on e.sal between s.losal and hisal group by deptno;

p7

  1. 不准用组函数(Max),取得最高薪水(给出两种解决方案)
    (方法1- - -order by & limit)
select sal from emp order by sal desc limit 1;

p8
(方法2- - -自连接)

select sal from emp where sal not in (select distinct a.sal from emp a join emp b on a.sal < b.sal);

p9

  1. 取得平均薪水最高的部门的部门编号(至少给出两种解决方案)
    (方法1- - -having)
select deptno, avg(sal) avg_sal from emp group by deptno having avg_sal = (select max(t.avgsal) from (select avg(sal) avgsal from emp group by deptno) t);

p10
(方法2- - -order by & limit)

select deptno, avg(sal) avg_sal from emp group by deptno order by avg_sal desc limit 1;

p11

  1. 取得平均薪水最高的部门的部门名称
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值