sql习题1(我的答案)

SELECT * FROM emp;
SELECT * FROM dept;
--1.列出至少有一个员工的所有部门。
SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp);
--2.列出薪金比“SMITH”多的所有员工。
SELECT * FROM emp WHERE sal>(SELECT sal FROM emp WHERE ename='SMITH');
--3.列出所有员工的姓名及其直接上级的姓名。
SELECT t1.ename 自己的名字,(SELECT t2.ename FROM emp t2 WHERE t1.mgr=t2.empno) 上级的名字 FROM emp t1 ;
--4.列出受雇日期早于其直接上级的所有员工。
SELECT t1.ename 姓名,t1.hiredate 入职日期,t2.ename 上级姓名,t2.hiredate 上级入职日期 FROM emp t1,emp t2  
WHERE t1.mgr=t2.empno AND t1.hiredate<t2.hiredate;
--5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
SELECT t2.dname 部门名称,t2.deptno 部门编号,t1.*  FROM emp t1 RIGHT  JOIN dept t2 ON t2.deptno=t1.deptno;
--6.列出所有“CLERK”(办事员)的姓名及其部门名称。
SELECT t1.ename 姓名,t2.dname 部门名称 FROM emp t1,dept t2 WHERE t1.job='CLERK' AND t1.deptno=t2.deptno;
--7.列出最低薪金大于1500的各种工作。
SELECT job 工作,MIN(sal) 薪水 FROM emp GROUP BY job HAVING MIN(sal)>1500
--8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
SELECT * FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES');
--9.列出薪金高于公司平均薪金的所有员工。
SELECT * FROM emp WHERE sal>(SELECT AVG(sal) FROM emp);
--10.列出与“SCOTT”从事相同工作的所有员工。
SELECT * FROM emp WHERE job=(SELECT job FROM emp WHERE ename='SCOTT');
--11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
SELECT * FROM emp WHERE deptno != 30 AND sal IN (SELECT sal FROM emp WHERE deptno='30');
--12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
SELECT * FROM emp WHERE sal>(SELECT MAX(sal) FROM emp WHERE deptno = 30);
--13.列出在每个部门工作的员工数量、平均工资和平均服务期限。
SELECT deptno 部门编号,COUNT(*) 员工数量,AVG(sal) 平均工资   FROM emp GROUP BY deptno;
--14.列出所有员工的姓名、部门名称和工资。
SELECT a.ename 员工姓名,b.dname 部门名称,a.sal 工资 FROM emp a,dept b WHERE a.deptno=b.deptno;
--15.列出所有部门的详细信息和部门人数。
SELECT a.*,(SELECT COUNT(*) FROM emp b WHERE a.deptno=b.deptno GROUP BY deptno  ) AS 部门人数 FROM dept a 
--16.列出各种工作的最低工资。
SELECT MIN(sal) FROM emp GROUP BY job;
--17.列出各个部门的MANAGER(经理)的最低薪金。
SELECT MIN(sal),deptno FROM emp WHERE job='MANAGER' GROUP BY deptno;
--18.列出所有员工的年工资,按年薪从低到高排序。
SELECT ename 姓名,(sal+NVL(comm,0))*12  年薪 FROM emp ORDER BY  年薪 ;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值