SQL面试必备:经典题目解析

需积分: 9 35 下载量 96 浏览量 更新于2024-12-27 收藏 58KB DOC 举报
"这篇文档包含了多个SQL面试题,旨在测试面试者对于SQL查询语言的理解和应用能力,包括但不限于数据去重、子查询、联接操作、全组合查询以及条件筛选等高级技巧。" 1. 数据去重问题: 题目要求找出每门课程成绩都大于80分的学生姓名。这可以通过使用子查询和`DISTINCT`关键字来实现,首先找出所有成绩小于等于80分的学生,然后在主查询中排除这些学生。 ```sql SELECT DISTINCT name FROM table WHERE name NOT IN (SELECT DISTINCT name FROM table WHERE score <= 80) ``` 2. 删除冗余信息: 删除重复记录,保留每组中自动编号最小的一条记录。这可以通过使用`GROUP BY`和`MIN()`函数配合`NOT IN`子查询来完成。 ```sql DELETE FROM table_name WHERE 自动编号 NOT IN (SELECT MIN(自动编号) FROM table_name GROUP BY 学号, 姓名, 课程编号, 课程名称, 分数) ``` 3. 全组合比赛查询: 展示所有可能的比赛组合。这可以通过两个表自身进行内联接实现,确保名字的比较关系是a<b。 ```sql SELECT a.name, b.name FROM team_a AS a, team_b AS b WHERE a.name < b.name ``` 4. 条件筛选与聚合函数: 查询所有月份的发生额都比101科目相应月份的发生额高的科目。这需要两表自连接,一个用于获取所有科目的信息,另一个用于获取101科目的最大发生额,然后通过月份匹配并比较发生额。 ```sql SELECT a.* FROM TestDB AS a ,(SELECT Occmonth, MAX(DebitOccur) AS Debit101Occur FROM TestDB WHERE AccID = '101' GROUP BY Occmonth) AS b WHERE a.Occmonth = b.Occmonth AND a.DebitOccur > b.Debit101Occur ``` 这些问题涵盖了SQL的基础和进阶应用,如数据筛选、聚合函数、子查询、联接操作以及去重等,是评估SQL技能的重要面试题型。对于面试者来说,熟练掌握这些技巧是必备的,因为它们在实际的数据处理和分析工作中有着广泛的应用。
2023-01-30 上传