SQL经典面试题实战解析:去重、比赛组合与科目对比
需积分: 9 73 浏览量
更新于2024-12-19
收藏 110KB DOC 举报
在SQL经典面试题中,面试官经常考察候选人的基础理论知识、查询技巧以及对数据库结构的理解。以下是一些常见的面试问题及其解答:
1. **查询每门课成绩都大于80分的学生姓名**:
该问题要求找出所有没有低于80分课程的学生,可以使用子查询来实现。SQL语句如下:
```
SELECT DISTINCT name
FROM table
WHERE name NOT IN (SELECT DISTINCT name FROM table WHERE fenshu <= 80);
```
这里假设表名为`table`,字段`fenshu`表示分数。
2. **删除重复记录(除自动编号外)**:
要删除具有相同学号、姓名、课程编号和课程名称但自动编号不同的重复项,可以使用`GROUP BY`和`MIN`函数:
```
DELETE FROM tablename
WHERE 自动编号 NOT IN (SELECT MIN(自动编号) FROM tablename GROUP BY 学号, 姓名, 课程编号, 课程名称, 分数);
```
3. **部门表中的比赛组合**:
假设`department`表仅有一个字段`name`,则列出所有可能的比赛组合,可以这样设计:
```
SELECT a.name, b.name
FROM teama AS a, teamb AS b
WHERE a.name < b.name;
```
这里假设`team`表有两个分支,`teama`和`teamb`,且每个表只包含球对的名字。
4. **比较TestDB数据库中科目发生额**:
查询TestDB中所有月份发生额高于科目101在相应月份发生额的科目,涉及到两个表连接和比较:
```
SELECT a.*
FROM TestDB a
JOIN (
SELECT Occmonth, MAX(DebitOccur) AS Debit101cur
FROM TestDB
WHERE AccID = '101'
GROUP BY Occmonth
) b ON a.Occmonth = b.Occmonth AND a.DebitOccur > b.Debit101cur;
```
其中`AccID`是科目代码,`Occmonth`是月份,`DebitOccur`是发生额。
5. **最后的问题是关于一个表格`yearm`,但题目没有提供具体内容,可能是关于时间范围的查询或者年度报告的筛选。如果需要解决这个问题,我们需要具体了解`yearm`表的结构和要查询的具体条件。例如,如果要找出某个年份或特定时间范围内特定事件的数据,可能会涉及`WHERE`子句和日期范围的操作。
这些问题不仅考察了SQL的基础语法,还涉及到了性能优化、关联查询、聚合函数等高级技能。候选人需具备良好的逻辑思维和实际操作能力才能应对这些面试挑战。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-04-28 上传
2012-04-22 上传
2008-03-14 上传
102 浏览量
2010-09-23 上传
2011-05-10 上传
zsx211314
- 粉丝: 0
- 资源: 1
最新资源
- Elasticsearch核心改进:实现Translog与索引线程分离
- 分享个人Vim与Git配置文件管理经验
- 文本动画新体验:textillate插件功能介绍
- Python图像处理库Pillow 2.5.2版本发布
- DeepClassifier:简化文本分类任务的深度学习库
- Java领域恩舒技术深度解析
- 渲染jquery-mentions的markdown-it-jquery-mention插件
- CompbuildREDUX:探索Minecraft的现实主义纹理包
- Nest框架的入门教程与部署指南
- Slack黑暗主题脚本教程:简易安装指南
- JavaScript开发进阶:探索develop-it-master项目
- SafeStbImageSharp:提升安全性与代码重构的图像处理库
- Python图像处理库Pillow 2.5.0版本发布
- mytest仓库功能测试与HTML实践
- MATLAB与Python对比分析——cw-09-jareod源代码探究
- KeyGenerator工具:自动化部署节点密钥生成