Oracle SQL:经典入门级查询练习(1)

来源:互联网 发布:怎样在淘宝上退货退款 编辑:程序博客网 时间:2024/05/17 08:52


    转:http://blog.csdn.net/cselmu9/article/details/7702813

    下面是一些sql语句的练习题目,后面附加有详细的答案,可作为入门练习参考。

    [plain] view plaincopyprint?
    1. 用SQL完成以下问题列表:  
    2. 1、列出至少有一个员工的所有部门。  
    3. 2、列出薪金比“SMITH”多的所有员工。  
    4. 3、列出所有员工的姓名及其直接上级的姓名。  
    5. 4、列出受雇日期早于其直接上级的所有员工。  
    6. 5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门  
    7. 6、列出所有“CLERK”(办事员)的姓名及其部门名称。  
    8. 7、列出最低薪金大于1500的各种工作。  
    9. 8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。  
    10. 9、列出薪金高于公司平均薪金的所有员工。  
    11. 10、列出与“SCOTT”从事相同工作的所有员工。  
    12. 11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。  
    13. 12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。  
    14. 13、列出在每个部门工作的员工数量、平均工资和平均服务期限。  
    15. 14、列出所有员工的姓名、部门名称和工资。  
    16. 15、列出所有部门的详细信息和部门人数。  
    17. 16、列出各种工作的最低工资。  
    18. 17、列出各个部门的MANAGER(经理)的最低薪金。  
    19. 18、列出所有员工的年工资,按年薪从低到高排序。  
    [sql] view plaincopyprint?
    1. /*查看有哪些表存在*/  
    2. select * from tab;  
    3.    
    4. TNAME                          TABTYPE  CLUSTERID  
    5. ------------------------------ ------- ----------  
    6. BONUS                          TABLE     
    7. DEPT                           TABLE     
    8. EMP                            TABLE     
    9. SALGRADE                       TABLE     
    10. /*查看bonus表的全部数据*/  
    11. SELECT  * FROM bonus;  
    12.   
    13. /*查看dept表的全部数据*/  
    14. SELECT  * FROM dept;  
    15.   
    16. /*查看emp表的全部数据*/  
    17. SELECT  * FROM emp;  
    18.   
    19. /*查看salgrade表的全部数据*/   
    20. SELECT  * FROM salgrade;  
    21.   
    22.   
    23. /*1、列出至少有一个员工的所有部门。*/  
    24. SELECT COUNT(empno),deptno FROM emp GROUP BY deptno HAVING  COUNT(empno)>  
    25.   
    26. /*2、列出薪金比“SMITH”多的所有员工。*/  
    27. SELECT * FROM emp WHERE sal >(SELECT sal FROM emp WHERE ename='SMITH');/*注意括号不能省略*/  
    28.   
    29. /*3、列出所有员工的姓名及其直接上级的姓名。*/  
    30. SELECT e.ename,m.ename FROM emp e,emp m WHERE e.mgr = m.empno;  
    31.   
    32. /*4、列出受雇日期早于其直接上级的所有员工。*/  
    33. SELECT e.empno,e.ename,m.empno, e.hiredate,m.hiredate FROM emp e,emp m WHERE e.mgr = m.empno AND e.hiredate < m.hiredate;  
    34. select a.ename from emp a where a.hiredate<(select hiredate from emp b where b.empno=a.mgr);  
    35.   
    36.   
    37. /*5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门*/  
    38.  SELECT d.dname,e.empno,e.ename,e.job,e.hiredate,e.sal FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno;  
    39.  select a.dname,b.empno,b.ename,b.job,b.mgr,b.hiredate,b.sal,b.deptno from dept a left join emp b on a.deptno=b.deptno;   
    40.   
    41. /*6、列出所有“CLERK”(办事员)的姓名及其部门名称。*/  
    42. SELECT e.ename,d.dname FROM emp e ,dept d WHERE e.deptno = d.deptno AND e.job = 'CLERK';  
    43. select a.ename,b.dname from emp a join dept b on a.deptno=b.deptno and a.job='CLERK';     
    44.   
    45. /*7、列出最低薪金大于1500的各种工作。*/  
    46. SELECT DISTINCT(e.job) FROM emp e group by job HAVING MIN(e.sal)>1500;  
    47.   
    48. /*8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。*/  
    49. SELECT e.ename FROM emp e JOIN dept d ON e.deptno = d.deptno AND d.dname='SALES';  
    50. SELECT e.ename FROM emp e,dept d WHERE e.deptno = d.deptno AND d.dname='SALES';  
    51. select ename from emp where deptno=(select deptno from dept where dname='SALES');   
    52.   
    53. /*9、列出薪金高于公司平均薪金的所有员工。*/  
    54. SELECT ename FROM emp WHERE sal > sum(sal);  
    55.   
    56. /*10、列出与“SCOTT”从事相同工作的所有员工。*/  
    57. SELECT ename FROM emp WHERE job = (SELECT job FROM emp WHERE ename='SCOTT'AND ename!='SCOTT';/*SCOTT不算在内*/  
    58. select ename from emp where job=(select job from emp where ename='SCOTT');  /*SCOTT算在内*/  
    59.   
    60. /*11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。*/  
    61. SELECT ename,sal FROM emp WHERE sal IN (SELECT sal FROM emp WHERE deptno=30) AND deptno!=30;  
    62. SELECT ename,sal FROM emp WHERE sal IN (SELECT sal FROM emp WHERE deptno=30) AND deptno<>30;  
    63.   
    64. /*12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。*/  
    65. SELECT ename,sal FROM emp WHERE sal > (SELECT MAX(sal) FROM emp WHERE deptno=30) AND deptno!=30;/*其实没有必要加 deptno!=30这个条件,因为已经是大于部门30中的最大薪金*/  
    66. select ename,sal from emp where sal>(select max(sal) from emp where deptno=30);  
    67.   
    68. /*13、列出在每个部门工作的员工数量、平均工资和平均服务期限。*/  
    69. SELECT COUNT(empno),SUM(sal)/COUNT(empno),AVG((SYSDATE-hiredate)/365) FROM emp GROUP BY(deptno);    
    70. SELECT COUNT(empno),AVG(sal),AVG((SYSDATE-hiredate)/365) FROM emp GROUP BY(deptno);  
    71.   
    72. /*14、列出所有员工的姓名、部门名称和工资。*/  
    73. SELECT e.ename,d.dname,e.sal FROM emp e, dept d WHERE e.deptno=d.deptno;  
    74. SELECT e.ename,d.dname,e.sal FROM emp e JOIN dept d ON e.deptno=d.deptno;  
    75. select a.ename,(select b.dname from dept b where b.deptno=a.deptno) as deptname,sal from emp a  
    76.   
    77. /*15、列出所有部门的详细信息和部门人数。*/  
    78. SELECT d.deptno,d.dname,d.loc, (SELECT COUNT(empno) from emp e WHERE e.deptno = d.deptno GROUP BY e.deptno) as emp_count FROM dept d;  
    79.   
    80. /*16、列出各种工作的最低工资。*/  
    81. SELECT job, MIN(sal) FROM emp GROUP BY job;  
    82. SELECT job, MIN(sal),MAX(sal),AVG(sal) FROM emp GROUP BY job;/*查看最低、最高、平均工资*/  
    83.   
    84. /*17、列出各个部门的MANAGER(经理)的最低薪金。*/  
    85. SELECT deptno, MIN(sal) FROM (SELECT sal,deptno FROM emp WHERE job='MANAGER'GROUP BY deptno;  
    86. SELECT deptno, MIN(sal),MAX(sal),AVG(sal) FROM (SELECT sal,deptno FROM emp WHERE job='MANAGER'GROUP BY deptno;/*查看最低、最高、平均工资*/  
    87. select deptno,min(sal) from emp where job='MANAGER' group by deptno;  
    88.   
    89. /*18、列出所有员工的年工资,按年薪从低到高排序。*/  
    90. SELECT ename,12*(sal+NVL(comm,0)) AS year_sal FROM emp ORDER BY year_sal;/*NVL(variable,x,)表示当变量variable为NULL的时候用x来替代*/  
    0 0
    原创粉丝点击
    热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高考体检表复印件丢了怎么办 高考体检表身高填错了怎么办 大学档案高考体检表丢了怎么办 工厂组织体检我有乙肝怎么办 我有乙肝单位组织体检怎么办? 矮腰袜子老掉怎么办 短腰袜子老下滑怎么办 中考体检结果丢了怎么办 咳嗽左胸围一处刺痛怎么办? 阴茎小父母催婚怎么办 头发扎进指甲缝怎么办 指甲缝扎流血了怎么办 中考考差了高中怎么办 骨折后我抽烟了怎么办 五年级科学考不好怎么办 考试连续考差了怎么办 客户说没考虑好怎么办 小孩生殖器痒经常用手抓怎么办 孩子在幼儿园生殖器官受伤怎么办? 被骗了3000块钱怎么办 小说 月经来了想体检怎么办 尿检的时候遇上月经期怎么办 消防兵改革那新兵怎么办 教师资格证体检有问题怎么办 检兵合格还在上学怎么办 运动后肌肉肿了怎么办 打架用力过猛肌肉疼痛怎么办 军检只要一项不合格怎么办 体检身高差一厘米怎么办 体检身高差两公分怎么办 体检身高差10厘米怎么办 孩子的爸爸总是打游戏怎么办 拉屎屁眼疼还有血怎么办 家里冼澡要等好多冷水怎么办 孕晚期小孩头大怎么办 报考警校体检不合格退回怎么办? 入职体检视力0.1怎么办 屁扒骨折疼要怎么办 宝宝发高烧怎么办能快速退烧 屁股上长了纹路怎么办 手机充电头歪了怎么办