sql (1)统计每个学生选修课程的总学分
时间: 2023-09-06 12:00:47 浏览: 952
要统计每个学生选修课程的总学分,我们可以结合学生表和选课表进行查询和计算。
首先,在学生表中查找学生的编号和姓名。然后,使用这些学生编号在选课表中筛选出对应的选课记录。接下来,根据该选课记录中的学分字段,汇总计算每个学生选修课程的总学分。
具体的SQL查询语句如下:
```
SELECT s.学生编号, s.学生姓名, SUM(c.学分) AS 总学分
FROM 学生表 s
INNER JOIN 选课表 c ON s.学生编号 = c.学生编号
GROUP BY s.学生编号, s.学生姓名
```
以上语句使用了INNER JOIN进行连接操作,通过学生编号将学生表和选课表进行关联。然后使用GROUP BY语句,将结果按学生编号和学生姓名进行分组。最后,使用SUM函数计算每个学生选修课程的总学分,并将结果显示为"总学分"的字段。
通过执行以上SQL查询语句,我们就可以得到每个学生选修课程的总学分。
相关问题
创建查询每个学生选修的总学分的视 图,要求列出学生姓名和总学分。
好的,针对您的问题,您可以使用以下 SQL 语句创建一个视图:
```
CREATE VIEW student_total_credit AS
SELECT student.name, SUM(course.credit) AS total_credit
FROM enrollment
JOIN student ON enrollment.student_id = student.id
JOIN course ON enrollment.course_id = course.id
GROUP BY student.name;
```
该视图会根据 enrollment 表中的学生和课程信息,计算每个学生选修的总学分,并将结果按学生姓名进行分组。您可以使用以下 SQL 语句查询该视图:
```
SELECT * FROM student_total_credit;
```
该查询将会返回每个学生的姓名和总学分。
包括学生学号以及每个学生选修课程的门数(要求成绩非空)和平均成绩; 8、查询每个学生的选课总学分,要求列出学生学号和总学分(说明:考试成绩超过60才能获得此课程的学分) 9、查询计算机系成绩在80分以上的学生姓名、课程名和成绩,并按成绩降序排列结果; 10、查询既选修了"数据库"又选修了"操作系统"的学生学号及姓名。
这是一组关于学生成绩管理系统的查询请求。以下是相应的 SQL 语句:
1. 查询所有学生的学号、姓名和性别:
```sql
SELECT 学号, 姓名, 性别 FROM 学生;
```
2. 查询所有课程的课程号和课程名:
```sql
SELECT 课程号, 课程名 FROM 课程;
```
3. 查询所有学生成绩的学号、课程号和成绩:
```sql
SELECT 学号, 课程号, 成绩 FROM 成绩;
```
4. 查询所有学生的选课情况(包括学号、姓名、课程号和成绩):
```sql
SELECT 学生.学号, 学生.姓名, 课程.课程号, 成绩.成绩
FROM 学生, 课程, 成绩
WHERE 学生.学号 = 成绩.学号 AND 课程.课程号 = 成绩.课程号;
```
5. 查询平均成绩大于等于 60 分的课程号和对应的平均成绩:
```sql
SELECT 课程号, AVG(成绩) AS 平均成绩
FROM 成绩
WHERE 成绩 IS NOT NULL
GROUP BY 课程号
HAVING AVG(成绩) >= 60;
```
6. 查询每个学生的选课门数和平均成绩:
```sql
SELECT 学生.学号, COUNT(成绩.课程号) AS 选课门数, AVG(成绩) AS 平均成绩
FROM 学生, 成绩
WHERE 学生.学号 = 成绩.学号 AND 成绩 IS NOT NULL
GROUP BY 学生.学号;
```
7. 查询每个学生选修的课程数(要求成绩非空)和平均成绩:
```sql
SELECT 学生.学号, COUNT(DISTINCT 成绩.课程号) AS 选修课程数, AVG(成绩) AS 平均成绩
FROM 学生, 成绩
WHERE 学生.学号 = 成绩.学号 AND 成绩 IS NOT NULL
GROUP BY 学生.学号;
```
8. 查询每个学生的选课总学分:
```sql
SELECT 学生.学号, SUM(课程.学分) AS 总学分
FROM 学生, 成绩, 课程
WHERE 学生.学号 = 成绩.学号 AND 成绩.课程号 = 课程.课程号 AND 成绩 >= 60
GROUP BY 学生.学号;
```
9. 查询计算机系成绩在80分以上的学生姓名、课程名和成绩,并按成绩降序排列结果:
```sql
SELECT 学生.姓名, 课程.课程名, 成绩.成绩
FROM 学生, 成绩, 课程
WHERE 学生.学号 = 成绩.学号 AND 成绩.课程号 = 课程.课程号 AND 学生.系别 = '计算机系' AND 成绩 >= 80
ORDER BY 成绩 DESC;
```
10. 查询既选修了"数据库"又选修了"操作系统"的学生学号及姓名:
```sql
SELECT 学生.学号, 学生.姓名
FROM 学生, 成绩 AS c1, 成绩 AS c2, 课程 AS k1, 课程 AS k2
WHERE 学生.学号 = c1.学号 AND 学生.学号 = c2.学号 AND c1.课程号 = k1.课程号 AND c2.课程号 = k2.课程号 AND k1.课程名 = '数据库' AND k2.课程名 = '操作系统';
```
阅读全文