高效解决SQL笔试题:查询80分以上学生姓名,删除冗余学生信息
4星 · 超过85%的资源 需积分: 10 94 浏览量
更新于2024-01-17
收藏 84KB DOC 举报
我精心收集和整理了一些 SQL 语句的笔试题,供大家参考和学习。其中,资源分配比较充足,希望能够满足大家的需求。
首先是第一道题目,要求用一条 SQL 语句查询出每门课都大于80分的学生姓名。给定的数据表如下:
```
姓名 课程 分数
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
```
我们可以使用以下 SQL 语句来解决这个问题:
```sql
SELECT DISTINCT name
FROM table
WHERE name NOT IN (
SELECT DISTINCT name
FROM table
WHERE fenshu <= 80
);
```
这条 SQL 语句会在原始表格中查询出所有分数不小于80分的学生姓名,且这些学生的姓名在其他任何一门课程的分数都不少于80分。由于题目中没有提到数据表的具体名称,所以我们使用了占位符 "table" 来表示数据表的名称。具体使用时,需要根据实际情况进行替换。
接下来是第二道题目,要求删除除了自动编号不同以外其他所有信息都相同的学生冗余信息。给定的学生表结构如下:
```
自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
```
为了删除冗余信息,我们可以使用以下 SQL 语句:
```sql
DELETE FROM student
WHERE (自动编号,学号,姓名,课程编号,课程名称,分数) NOT IN (
SELECT MIN(自动编号),学号,姓名,课程编号,课程名称,分数
FROM student
GROUP BY 学号,姓名,课程编号,课程名称,分数
);
```
这条 SQL 语句会删除除了自动编号不同以外,其他所有信息都相同的学生记录。我们使用了嵌套查询来找到每个学生信息中的最小自动编号,并将其与其他信息进行比较,从而确定要删除的冗余记录。需要注意的是,这里假设冗余信息是相邻的,如果相同信息的记录散布在表中的不同位置,则需要对其进行更复杂的处理。
总而言之,这些 SQL 语句是笔试题中常见的问题,通过了解和掌握它们,可以提高我们在编写 SQL 查询语句和处理数据冗余时的能力。希望这些题目能够对大家的学习有所帮助。
2010-03-20 上传
2009-02-23 上传
2008-11-05 上传
2017-03-09 上传
2011-05-29 上传
2010-10-14 上传
ldh2068vip
- 粉丝: 1
- 资源: 10
最新资源
- kk
- Crowd4Ems-crx插件
- 微信小程序:图片拼图小程序源码
- psync-java:PSync的Java端口
- 电信设备-基于信息熵的音乐哼唱检测方法.zip
- f-flat_node:F♭(发音为F-flat)是一种玩具语言
- 易语言-易语言销售记账软件
- 排序算法
- ASP基于WEB网上日记本毕业设计(源代码+论文).zip
- familyfriends:使用react和redux
- monTabib
- AppHerokuTest:App Heroku测试
- ML-Playground:机器学习技术的游乐场
- 易语言-易语言EBD数据库例程 礼金记录器
- 2019年中国跨境出口电商行业发展报告精品报告2020.rar
- robofriends-hooks:为ZTM Web开发课程创建的RoboFriends React应用...现在使用React Hooks。