mysql列出课程平均分大于80分的课程名和平均分,并按平均分降序方式排序
时间: 2024-02-12 15:08:21 浏览: 102
可以使用以下 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` 子句用于对结果按平均分降序排序。
希望能帮助到你!
相关问题
怎么在mysql显示各同学的学号和平均分,按平均分降序排列。只统计各科都及格的同学
可以使用如下的SQL语句来实现:
```
SELECT 学号, AVG(分数) as 平均分
FROM 成绩表
GROUP BY 学号
HAVING MIN(分数) >= 60
ORDER BY 平均分 DESC;
```
其中,`成绩表`是你的成绩表名称,`学号`和`分数`是成绩表中对应的字段名称。这个查询首先按照学号进行分组,然后筛选出各科都及格的同学,最后按照平均分降序排列。
统计第1学期所开设课程的选课情况(课程名,选课人数,该门课程的平均分),结果按课程的平均分由高到低排序。MySQL
在MySQL中,要统计第一学期开设的课程选课情况,并按平均分降序排列,你需要创建一个SQL查询。假设我们有两个表,一个是`courses`(存储课程信息,包括课程名`course_name`和ID`course_id`),另一个是`registrations`(存储学生选课记录,包含`student_id`、`course_id`和`score`)。以下是查询的一个例子:
```sql
SELECT c.course_name, COUNT(r.student_id) as total_students, AVG(r.score) as average_score
FROM courses c
JOIN registrations r ON c.course_id = r.course_id
WHERE c.semester = '第一学期'
GROUP BY c.course_id, c.course_name
ORDER BY average_score DESC;
```
这个查询做了以下几件事:
1. `JOIN`了`courses`和`registrations`表,通过`course_id`关联。
2. 使用`WHERE`条件筛选出第一学期的课程。
3. `GROUP BY`按课程名和ID区分,计算每门课的选课人数(`COUNT`)和平均分(`AVG`).
4. 最后,`ORDER BY`按照平均分`average_score`降序排列结果。
阅读全文