Oracle SQL实战:经典习题集锦
需积分: 9 36 浏览量
更新于2024-07-19
收藏 513KB PDF 举报
"ORACLE_SQL练手 5篇"
这些练习题目主要涵盖了Oracle SQL的基础查询和高级用法,包括了对员工(EMP)和部门(DEPT)表的数据操作。以下是对每个问题的详细解释:
1. 列出至少有一个员工的所有部门。
使用`INNER JOIN`或`EXISTS`子句,连接DEPT和EMP表,查找有员工的部门。
2. 列出薪金比“SMITH”多的所有员工。
首先找到SMITH的薪水,然后使用`WHERE`子句筛选出薪水更高的员工。
3. 列出所有员工的姓名及其直接上级的姓名。
这可能需要自连接EMP表,通过员工ID(假设为MGR)匹配上级ID。
4. 列出受雇日期早于其直接上级的所有员工。
同样使用自连接,并比较EMP.HIRE_DATE与EMP.MGR对应的HIRE_DATE。
5. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
可以使用LEFT JOIN,将DEPT表与EMP表连接,展示所有部门信息,即使某些部门没有员工。
6. 列出所有“CLERK”(办事员)的姓名及其部门名称。
使用`WHERE`子句过滤出JOB标题为'CLERK'的员工。
7. 列出最低薪金大于1500的各种工作。
分组(GROUP BY)JOB,然后使用HAVING子句过滤出MIN(SAL)大于1500的记录。
8. 列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
使用`LIKE`或`INSTR`函数匹配部门名称。
9. 列出薪金高于公司平均薪金的所有员工。
先计算所有员工的平均薪水,然后在主查询中筛选出高于这个平均值的员工。
10. 列出与“SCOTT”从事相同工作的所有员工。
检索SCOTT的JOB,然后找出其他所有与之相同的JOB。
11. 列出与部门30中员工的工作相同的所有员工的姓名和薪金。
分别找出部门30的JOB和所有其他员工的JOB进行比较。
12. 列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
对比部门30的最高薪水(可以使用窗口函数)与其他员工的薪水。
13. 列出在每个部门工作的员工数量、平均工资。
分组并计算COUNT(*)和AVG(SAL)。
14. 列出所有员工的姓名、部门名称和工资。
直接JOIN EMP和DEPT表,选择ENAME, DEPT.DEPT_NAME, EMP.SAL。
15. 列出所有部门的详细信息和部门人数。
加入COUNT(EMP.EMP_ID)到DEPT表查询中,以计算每个部门的员工数量。
16. 列出各种工作的最低工资。
分组(GROUP BY)JOB,然后选择MIN(SAL)。
17. 列出各个部门的MANAGER(经理)的最低薪金。
筛选出JOB为'MANAGER'的员工,分组后取MIN(SAL)。
18. 列出所有员工的年工资,按年薪从低到高排序。
计算年工资(SAL * 12),然后ORDER BY ASC。
19. 查询每个部门工资前三位的数据。
使用窗口函数ROW_NUMBER()分组后,筛选出每组的前三名。
对于后面的问题,涉及到字符串处理、条件匹配、排序和特定查询结构的使用,需要具体分析每个问题来编写相应的SQL语句。这些问题涵盖了SQL的基本查询、连接、聚合、分组、排序以及更复杂的逻辑,是学习和提升Oracle SQL技能的好资料。
2013-06-11 上传
2009-12-30 上传
2018-02-07 上传
2011-09-14 上传
2015-05-14 上传
2016-07-15 上传
2012-03-27 上传
2009-10-12 上传
VeeLe
- 粉丝: 92
- 资源: 6