我一直在研究并尝试各种查询以使其正常工作。我想要发生的是根据他们的平均值对每个学生进行排名,该平均值将使用 AVG(grade) 计算,并将按 student_id 分组。包含必要信息的表格如下:
assessment_id | student_id | grade | subject_id
查询后我想看到的是:
student_id | AVG(grade) | rank
我还想使用 PHP 获得学生的排名,例如 (mysql_query) WHERE student_id = '1001'
我最接近的方法是使用下面的查询:
SELECT student_id, AVG(grade), (@rn := @rn + 1) AS rank
FROM grades CROSS JOIN (SELECT @rn := 0) CONST
GROUP BY student_id ORDER BY AVG(grade) DESC
上面查询的问题在于它根据学生的学生 ID 号对学生进行排名。
我一直在寻找解决方案,但它们似乎并没有解决我所追求的。我非常感谢您对此的帮助。
我现在无法测试这个,但你可能想要这样的东西: