"SQL实例教学:50句查询一个课题涉及的学生成绩与教师信息"
需积分: 0 3 浏览量
更新于2024-03-22
收藏 25KB DOCX 举报
在这个数据库中,涉及到学生表(tblStudent)、课程表(tblCourse)、成绩表(tblScore)和教师表(tblTeacher)四张表的数据查询。其中,学生表包含学生的编号(StuId)、姓名(StuName)、年龄(StuAge)和性别(StuSex)信息;课程表包含课程的编号(CourseId)、课程名称(CourseName)和教师编号(TeaId)信息;成绩表包含学生编号(StuId)、课程编号(CourseId)和成绩(Score)信息;教师表包含教师编号(TeaId)和姓名(TeaName)信息。
针对问题1,要查询“001”课程比“002”课程成绩高的所有学生的学号,可以通过以下SQL语句实现:
```
SELECT DISTINCT S.StuId
FROM tblScore S
WHERE S.CourseId = '001' AND S.Score > (
SELECT MAX(Score)
FROM tblScore
WHERE CourseId = '002' AND StuId = S.StuId
);
```
这条SQL语句的作用是首先在成绩表中找到所有选修“001”课程且成绩高于选修“002”课程中最高成绩的学生的学号。首先对成绩表进行自连接,筛选出选修“001”课程的学生成绩,并与另一次子查询结果(最高的“002”课程成绩)进行比较,最终得到“001”课程成绩高于“002”课程成绩的学生学号。
除了问题1,我们还可以通过不同的SQL语句来实现更多数据查询功能,如:
2、查询选修“002”课程的成绩高于80分的学生姓名和成绩;
```
SELECT S.StuName, S.Score
FROM tblStudent S
INNER JOIN tblScore SC ON S.StuId = SC.StuId
WHERE SC.CourseId = '002' AND SC.Score > 80;
```
3、查询成绩表中最高分和最低分的学生姓名和成绩;
```
SELECT S.StuName, S.Score
FROM tblStudent S
INNER JOIN tblScore SC ON S.StuId = SC.StuId
WHERE SC.Score = (
SELECT MAX(Score)
FROM tblScore
)
OR SC.Score = (
SELECT MIN(Score)
FROM tblScore
);
```
4、查询每门课程的平均分和及格率;
```
SELECT C.CourseName, AVG(SC.Score) AS AverageScore, COUNT(CASE WHEN SC.Score >= 60 THEN 1 END) / COUNT(*) AS PassRate
FROM tblCourse C
LEFT JOIN tblScore SC ON C.CourseId = SC.CourseId
GROUP BY C.CourseName;
```
通过以上SQL语句,我们可以在这个数据库中实现更多复杂的数据查询和分析。在实际应用中,可以根据具体需求编写不同的SQL语句来进行数据查询和统计,以满足业务需求并获取准确的数据分析结果。
2022-01-16 上传
117 浏览量
2022-01-16 上传
116 浏览量
2022-07-11 上传
2022-06-13 上传

weixin_45823866
- 粉丝: 0
最新资源
- 虚幻引擎4经典FPS游戏开发包解析
- 掌握LaTeX中psfig.sty的使用技巧
- 探索X102 51学习板:深入嵌入式系统开发
- 深入理解STM32外部中断的实现与应用
- 大冶市数字高程模型(DEM)数据详细解读
- 俄罗斯方块游戏制作教程:Protues实现指南
- ASP.NET视频点播系统源代码及论文:多技术项目资源集锦
- Platzi JavaScript课程体系:全面覆盖初、中、高级
- cutespotify:跨平台MeeSpot音乐播放器兼容SailfishOS
- PictureEx类:在VC6下显示jpg与gif动图
- 基于stc89C51的数字时钟Proteus仿真设计
- MATLAB全面基础教程与实践技巧分享
- 实现双行文字向上滚动效果的js插件
- Labview温度报警系统:实时监控与声光警报
- Java官网ehcache-2.7.3实例教程
- A-Frame超级组件集:超帧的创新与应用