SQL面试经典题集:查询与分析实例

3星 · 超过75%的资源 需积分: 9 15 下载量 119 浏览量 更新于2024-09-26 收藏 333KB DOC 举报
在IT面试中,SQL是一种重要的技能,尤其对于数据库管理和数据分析岗位至关重要。本文提供了一系列针对SQL的经典面试题,涵盖了基本查询到复杂联接操作的考察。以下是对每个问题的详细解析: 1. **查询比“001”课程成绩更高的“002”课程学生**: 这道题目测试了对子查询和比较操作的理解。你需要首先找出“001”课程的所有学生及其分数(subquery a),然后找出“002”课程的学生分数(subquery b)。最后,筛选出那些“001”课程分数大于“002”课程分数且学生编号相同的记录。这个查询涉及到了JOIN和WHERE子句的使用。 2. **查询平均成绩大于60分的学生信息**: 这是一道基础的GROUP BY和HAVING子句应用题。通过GROUP BY S#对学号进行分组,计算每个学生的平均成绩,HAVING条件则用于过滤出平均成绩超过60分的学生,返回他们的学号和平均成绩。 3. **统计每个学生的选课信息**: 此题考核了LEFT JOIN和聚合函数的运用。通过LEFT JOIN将学生表与成绩表连接,根据学号(S#)进行分组,计算出每个学生的选课数量(count(SC.C#))和总成绩(sum(score)),并包括未选课的学生信息。 4. **查找姓“李”的教师数量**: 此题考察的是LIKE操作符和DISTINCT关键字。通过在Teacher表中查找以“李”开头的Tname,并使用DISTINCT去除重复的教师名字,得到结果。 5. **查询未上过“叶平”老师课程的学生**: 这里涉及到多表联接和NOT IN操作。通过联接SC、Course和Teacher表,找出“叶平”老师的课程,再排除这些课程的所有学生,返回他们的学号和姓名。 6. **查询同时选修“001”和“002”课程的学生**: 使用EXISTS子句,首先确定学生是否选修了“001”课程,然后在外部查询中检查该学生的“002”课程情况,确保满足两个课程都已选修。 7. **获取“叶平”老师所有课程的学生信息**: 这道题目的重点是IN子句,用于查找学生表中,学号在关联到“叶平”老师课程的学生集合中的学生,返回他们的学号和姓名。 以上SQL面试题涵盖了查询的多个方面,包括基本的筛选、分组、联接、聚合函数以及更复杂的逻辑条件,对于应聘者来说,不仅检验了他们的SQL基础,还考察了他们对数据处理和业务逻辑理解的能力。