按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩sql
时间: 2024-02-17 08:03:18 浏览: 23
好的,以下是根据您的要求编写的 SQL 语句:
```
SELECT StudentID, Course, Grade, AVG(Grade) OVER(PARTITION BY StudentID) AS AvgGrade
FROM StudentGrades
ORDER BY AvgGrade DESC;
```
这个 SQL 语句会从 `StudentGrades` 表中选取学生 ID、课程、成绩,并计算每个学生的平均成绩。最后按照平均成绩从高到低进行排序。
相关问题
17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩sql
假设有以下两个表格:
**students**
| id | name |
| --- | ---- |
| 1 | Tom |
| 2 | Jerry|
| 3 | Lucy |
**scores**
| id | student_id | course | score |
| --- | ----------| ------| ----- |
| 1 | 1 | Math | 80 |
| 2 | 1 | English | 75 |
| 3 | 2 | Math | 90 |
| 4 | 2 | English | 85 |
| 5 | 3 | Math | 95 |
| 6 | 3 | English | 80 |
按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩的 SQL 查询语句如下:
```sql
SELECT s.name, sc.course, sc.score, AVG(sc.score) AS avg_score
FROM students s
INNER JOIN scores sc ON s.id = sc.student_id
GROUP BY s.id, sc.course, sc.score
ORDER BY avg_score DESC;
```
查询结果如下:
| name | course | score | avg_score |
| ----- | ------- | ----- | --------- |
| Lucy | Math | 95 | 87.5 |
| Jerry | Math | 90 | 87.5 |
| Tom | Math | 80 | 85 |
| Jerry | English | 85 | 80 |
| Lucy | English | 80 | 80 |
| Tom | English | 75 | 80 |
按平均成绩从高到低显示所有学生的“数学”、“语文”、“英语” 三门的课程成绩,按如下形式显示: student_id,math,chinese,english,course_num,avg_score
你可以使用以下SQL查询语句按平均成绩从高到低显示所有学生的数学、语文和英语三门课程的成绩:
```sql
SELECT student_id, math, chinese, english, 3 AS course_num, (math + chinese + english) / 3 AS avg_score
FROM your_table
ORDER BY avg_score DESC;
```
在这个示例中,`your_table`是你存储学生成绩的表名。查询结果会按照平均成绩从高到低的顺序进行排序,并且每一行显示学生的ID、数学成绩、语文成绩、英语成绩、课程数量(这里是3),以及平均分数(数学、语文和英语的平均值)。