用于获取平均分数的SQL命令

时间:2020-09-08 13:07:10

标签: mysql sql

考虑到下表标记了学校数据库的一部分,其中包含以下各列

  • 学生ID :存储学生的ID
  • 课程:存储课程名称
  • 分数:存储学生在特定课程中获得的分数

编写查询以确定学生获得的平均分数。将结果按平均标记的降序排列。如果两个学生的平均分数相同,则应首先显示具有较低Student_id的学生。

输出应为以下形式

|Student_id|avg(marks)|

我的查询:

SELECT Student_id, avg(Marks) FROM Marks ORDER BY Student_id DESC 

请让我知道我在做什么错? SQL对我来说是新的。

3 个答案:

答案 0 :(得分:1)

尝试使用以下查询:

{if $fileExists}

您能详细说明您的问题,提供适当的方案,以便我们提供更好的解决方案吗?

答案 1 :(得分:0)

您需要分别为每个学生分别添加GROUP BY Student_idCOUNT作为分母,以确定平均值:

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;`