"SQL实例教学:50句查询一个课题涉及的学生成绩与教师信息"
需积分: 0 111 浏览量
更新于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 上传
2023-12-18 上传
2022-01-16 上传
112 浏览量
2022-07-11 上传
2022-06-13 上传
weixin_45823866
- 粉丝: 0
- 资源: 1
最新资源
- 英语学习常用网站 附写作翻译之类的网站
- SQLServer的简介和使用
- linux入门笔记.pdf 初学者学习linux的最佳选择
- Image segmentation by histogram thresholding
- 恺撒(caesar)密码
- Bookends user guide
- struts in action中文版1.2
- ARM微处理器教程全集
- 用U盘安装系统.doc
- 华为编程规范--相当的严谨
- showModalDialog()、showModelessDialog()方法的使用.
- DOOM启示录(中文版)
- linux内核源码分析0.11.pdf
- DOS工具箱使用方法
- java深入浅出设计模式
- 经典的CCNA笔记 十分精简 短小精悍