SQL面试精华:复杂查询与去重问题解析
需积分: 26 200 浏览量
更新于2024-07-17
收藏 158KB PDF 举报
本文档主要探讨的是SQL面试题库中的典型问题和实例,涉及多个知识点。首先,讨论如何使用SQL查询找出每门课成绩都超过80分的学生姓名。提供三种不同的解决方案:
1. 第一种方法是通过子查询和排除法,使用`minus`操作符来找出没有低于80分课程的学生名字,如 `select stu_name from stu_grade minus select stu_name from stu_grade where grade <= 80`。
2. 第二种方法采用`not exists`来确保每个学生的所有课程成绩都没有低于80分,即 `select distinct stu_name from stu_grade where not exists (select 1 from stu_grade inner join on ou.stu_name = inn.stu_name and inn.grade <= 80)`。
3. 第三个方法利用`not in`操作符和`distinct`来避免子查询中使用组函数,如 `select distinct t1.stu_name from stu_grade t1 where t1.stu_name not in (select distinct t2.stu_name from stu_grade t2 where t2.grade <= 80)`。
接下来,针对一个学生表的数据,介绍了如何删除重复记录,但仅保留第一条具有特定条件的记录,例如自动编号不同。这涉及到使用`delete`语句配合子查询来筛选满足条件的唯一记录,但强调不能在`where`子句中直接使用`group by`。
然后,讨论了一个关于部门表`department`的问题,表中只有单个字段`name`,代表四个球队。题目要求列出所有可能的比赛组合,可以通过简单的两表连接(`teamA`和`teamB`)并按照队伍名称排序来实现,如 `select a.name, b.name from teamA, teamB where a.name < b.name`。
最后,给出了一个实际应用的例子,要求查询TestDB数据库表中某个科目(101)每月发生额,与题目中未给出具体查询语句,但暗示需要找出该科目所有月份的金额数据,这可能需要使用日期范围和JOIN操作来获取所需信息。
这些题目涵盖了SQL的基本操作、数据去重、连接查询和条件筛选等多个方面,对于准备SQL面试的人来说,这些都是重要的知识点。
点击了解资源详情
2021-10-10 上传
2013-03-21 上传
2018-11-17 上传
2017-11-11 上传
2018-05-14 上传
silimade7
- 粉丝: 1
- 资源: 23
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍