考虑到下表标记了学校数据库的一部分,其中包含以下各列
编写查询以确定学生获得的平均分数。将结果按平均标记的降序排列。如果两个学生的平均分数相同,则应首先显示具有较低Student_id的学生。
输出应为以下形式
|Student_id|avg(marks)|
我的查询:
SELECT Student_id, avg(Marks) FROM Marks ORDER BY Student_id DESC
请让我知道我在做什么错? SQL对我来说是新的。
答案 0 :(得分:1)
尝试使用以下查询:
{if $fileExists}
您能详细说明您的问题,提供适当的方案,以便我们提供更好的解决方案吗?
答案 1 :(得分:0)
您需要分别为每个学生分别添加GROUP BY Student_id
和COUNT
作为分母,以确定平均值:
SELECT Student_id,
SUM(marks) / (SELECT COUNT(Student_id)
FROM Marks
WHERE Student_id = m.Student_id) AS avg_marks
FROM Marks m
GROUP BY Student_id
ORDER BY avg_marks DESC
P.S .:我不明白您为什么提到其他表格而不定义它们的架构。
答案 2 :(得分:0)
SELECT Student_id,
avg(Marks) AS avg_marks
FROM Marks
GROUP BY Student_id
ORDER BY avg_marks DESC;`