mysql列出课程平均分大于80分的课程名和平均分,并按平均分降序方式排序
时间: 2024-02-12 09:08:21 浏览: 26
可以使用以下 SQL 语句来实现:
```
SELECT course_name, AVG(score) AS avg_score
FROM scores
GROUP BY course_name
HAVING avg_score > 80
ORDER BY avg_score DESC;
```
其中,`scores` 表是存储学生成绩的表,包含三列:`course_name`(课程名)、`student_name`(学生名)和 `score`(成绩)。
解释一下上面的 SQL 语句:
- `SELECT` 子句用于选取需要的列,包括课程名和平均分。
- `AVG(score) AS avg_score` 表示计算每个课程的平均分,并将平均分的列名设置为 `avg_score`。
- `GROUP BY` 子句用于将数据按课程名分组。
- `HAVING` 子句用于筛选出平均分大于80分的课程。
- `ORDER BY` 子句用于对结果按平均分降序排序。
希望能帮助到你!
相关问题
使用exists查询平均分大于85课程名mysql语句
假设你的学生成绩表名为`scores`,包含以下字段:`student_id`(学号)、`course_name`(课程名)、`score`(分数)。
使用`EXISTS`查询平均分大于85的课程名的MySQL语句如下:
```
SELECT DISTINCT course_name FROM scores s1
WHERE EXISTS (
SELECT * FROM scores s2
WHERE s2.course_name = s1.course_name
GROUP BY s2.course_name
HAVING AVG(s2.score) > 85
);
```
首先我们在`s1`中查询所有的课程名,然后通过`EXISTS`子查询判断该课程名对应的记录中是否存在平均分大于85的记录(使用`HAVING`子句进行平均分的筛选),如果存在,就将该课程名返回(使用`DISTINCT`去重)。
mysql列出选修人数大于2人的课程名和人数,并按照选修人数升序方式排序
可以使用如下 SQL 语句来实现:
```
SELECT course_name, COUNT(*) AS num_of_students
FROM course_selection
GROUP BY course_name
HAVING num_of_students > 2
ORDER BY num_of_students ASC;
```
其中,`course_selection` 是选课表的表名,`course_name` 是课程名的列名,`num_of_students` 是选修该课程的人数,使用 `COUNT(*)` 函数来统计,`HAVING` 子句用于筛选选修人数大于 2 的课程,`ORDER BY` 子句用于将结果按选修人数升序排序。