尝试将ORDER BY与平均值一起使用

Naw*_*gle 1 mysql sql-order-by

我需要根据某些值的平均值对SQL表中的值进行排序.

我的'考试'表格如下:

+------------+------------+------+
| Exam       | Student_ID |Points|
+------------+------------+-------
| Math       |     3      | 20   |      
|Accounts I  |    23      | NULL | 
|Statistics  |    12      | 15   |
|Accounts II |     3      | 21   |
+------------+------------+------+
Run Code Online (Sandbox Code Playgroud)

这是我试过的查询:

SELECT Student_ID FROM Exams GROUP BY Student_ID ORDER BY avg(POINTS) desc
Run Code Online (Sandbox Code Playgroud)

我的目标是获得平均评分最高的学生的学生证,在这种情况下,3

我的方法是正确的,还是潜伏在那里?如何在Points列中处理NULL值?

fra*_*ail 5

你有2个选择:

不要算NULL:

SELECT Student_ID, AVG(Points) AS apoints 
FROM Exam
WHERE Points IS NOT NULL
GROUP BY Student_ID 
ORDER BY apoints DESC
Run Code Online (Sandbox Code Playgroud)

假设NULL是一个数字(在本例中为0):

SELECT Student_ID, AVG(COALESCE(Points,0)) AS apoints 
FROM Exam
GROUP BY Student_ID 
ORDER BY apoints DESC
Run Code Online (Sandbox Code Playgroud)