"SQL实例教学:50句查询一个课题涉及的学生成绩与教师信息"
需积分: 0 177 浏览量
更新于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语句来进行数据查询和统计,以满足业务需求并获取准确的数据分析结果。
2023-02-24 上传
2023-05-31 上传
2023-06-10 上传
2023-05-31 上传
2023-05-30 上传
2023-05-31 上传
weixin_45823866
- 粉丝: 0
- 资源: 1
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命