MySQL查询score表中至少有5明同学选修并以3开头的的课程的平均分数
时间: 2023-12-14 10:39:21 浏览: 81
可以使用如下的SQL语句:
```
SELECT AVG(score) AS avg_score
FROM score
WHERE course_id LIKE '3%'
GROUP BY student_id
HAVING COUNT(DISTINCT course_id) >= 5;
```
解释一下这个SQL语句:
首先,我们筛选出以3开头的课程,使用`WHERE course_id LIKE '3%'`语句。
然后,按照`student_id`分组,使用`GROUP BY student_id`语句。
接着,我们使用`COUNT(DISTINCT course_id)`函数,统计每个学生选修的不同课程数量,并使用`HAVING`语句过滤出选修课程数目大于等于5的学生。
最后,使用`AVG(score)`函数计算每个符合条件的学生的平均分数。
相关问题
查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。查询结果包括课程号,课程名称,平均分数。用mysql语句
可以使用如下的 MySQL 语句来查询:
```mysql
SELECT s.cno, c.name, AVG(s.score) AS avg_score
FROM Score s
JOIN Course c ON s.cno = c.cno
WHERE s.cno LIKE '3%'
GROUP BY s.cno, c.name
HAVING COUNT(DISTINCT s.sno) >= 5;
```
其中,该查询使用了以下语句:
- `SELECT`:选择要查询的字段,包括课程号、课程名称和平均分数。
- `FROM`:指定要查询的表,即成绩表 Score。
- `JOIN`:使用内连接将课程表 Course 与成绩表 Score 关联起来,通过课程号(cno)进行关联。
- `WHERE`:使用 `LIKE` 运算符筛选出课程号以 3 开头的课程。
- `GROUP BY`:按照课程号和课程名称对数据进行分组,以便计算平均分数。
- `HAVING`:在分组之后,筛选出至少有 5 名学生选修的课程,即学生学号去重后的数量大于等于 5。
- `AVG`:计算平均分数。
请注意,以上语句中的表名、字段名等需要根据具体情况进行修改。
阅读全文