查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分的sql语句
时间: 2024-04-29 17:21:15 浏览: 91
假设选修课程的成绩存储在表course_score中,学生信息存储在表student中,选修关系存储在表course_student中,作业分数分别存储在列score1、score2、score3中,可以使用以下sql语句查询选修三门以上课程的学生的学号和作业1平均分、作业2平均分和作业3平均分:
```
SELECT cs.student_id, AVG(cs.score1) AS avg_score1, AVG(cs.score2) AS avg_score2, AVG(cs.score3) AS avg_score3
FROM course_score cs
INNER JOIN course_student cs2 ON cs.course_id = cs2.course_id
WHERE cs2.student_id IN (
SELECT student_id
FROM course_student
GROUP BY student_id
HAVING COUNT(course_id) >= 3
)
GROUP BY cs.student_id;
```
该sql语句使用了子查询和聚合函数,首先在子查询中筛选出选修三门以上课程的学生id,然后使用INNER JOIN关联course_score表和course_student表,再根据学生id使用GROUP BY分组,并使用AVG函数求出每个学生的作业平均分。
相关问题
在作业表,学生表,课程表中.查询没有作业成绩的学号和课程号。 10.查询学号为0538的学生的作业1总分。 11.查询选修了K001课程的学生人数。 12.查询数据库中共有多少个班级。 13.查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。
好的,我会根据您的要求进行回答。以下是您的问题的答案:
10. 查询学号为0538的学生的作业1总分。
```sql
SELECT SUM(score) AS '作业1总分'
FROM 作业表
WHERE 学号 = '0538' AND 作业编号 = '作业1';
```
11. 查询选修了K001课程的学生人数。
```sql
SELECT COUNT(DISTINCT 学号) AS '选修K001课程的学生人数'
FROM 学生表
WHERE 学号 IN (SELECT 学号 FROM 选课表 WHERE 课程号 = 'K001');
```
12. 查询数据库中共有多少个班级。
```sql
SELECT COUNT(DISTINCT 班级) AS '班级数量'
FROM 学生表;
```
13. 查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。
```sql
SELECT 学号, AVG(CASE WHEN 作业编号 = '作业1' THEN score END) AS '作业1平均分',
AVG(CASE WHEN 作业编号 = '作业2' THEN score END) AS '作业2平均分',
AVG(CASE WHEN 作业编号 = '作业3' THEN score END) AS '作业3平均分'
FROM 作业表
WHERE 学号 IN (
SELECT 学号
FROM 选课表
GROUP BY 学号
HAVING COUNT(DISTINCT 课程号) >= 3
)
GROUP BY 学号;
```
希望这些答案能帮到您!如果您还有其他问题,可以继续向我提问。
12.查询数据库中共有多少个班级。 13.查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。 14.查询于兰兰的选课信息,列出学号、姓名、课程名(使用两种连接查询的方式)。
我很抱歉,作为一个语言模型AI,我无法直接查询数据库。但是,我可以告诉您如何实现这些查询。
12. 查询数据库中共有多少个班级。
您可以使用以下SQL语句查询:
```sql
SELECT COUNT(DISTINCT class) FROM your_table;
```
其中,`your_table`是您的数据表名,`class`是班级对应的列名。
13. 查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。
您可以使用以下SQL语句查询:
```sql
SELECT student_id, AVG(score1) AS avg_score1, AVG(score2) AS avg_score2, AVG(score3) AS avg_score3
FROM your_table
WHERE course_count >= 3
GROUP BY student_id;
```
其中,`your_table`是您的数据表名,`student_id`是学生ID对应的列名,`score1`、`score2`、`score3`是作业1、作业2、作业3对应的列名,`course_count`是学生选修课程数对应的列名。
14. 查询于兰兰的选课信息,列出学号、姓名、课程名(使用两种连接查询的方式)。
您可以使用以下两种连接查询方式:
方式一:使用INNER JOIN
```sql
SELECT s.student_id, s.student_name, c.course_name
FROM student_table s
INNER JOIN course_table c ON s.student_id = c.student_id
WHERE s.student_name = '于兰兰';
```
其中,`student_table`是学生表名,`course_table`是选课表名,`student_id`是学生ID对应的列名,`student_name`是学生姓名对应的列名,`course_name`是课程名称对应的列名。
方式二:使用SUBQUERY
```sql
SELECT student_id, student_name, course_name
FROM student_table
WHERE student_id IN (
SELECT student_id FROM course_table WHERE student_name = '于兰兰'
);
```
其中,`student_table`是学生表名,`course_table`是选课表名,`student_id`是学生ID对应的列名,`student_name`是学生姓名对应的列名,`course_name`是课程名称对应的列名。