如何用mysql计算每门课程每个学生的平均分数

时间:2017-04-22 16:32:00

标签: mysql database

我将使用上面的例子让你清楚。

student_id | c1 | c2 | c3 | c4
         1 | 85 | 90 | 73 | 99
         2 | 56 | 85 | 86 | 96
         3 | 23 | 74 | 54 | 88

我的问题是如何同时计算所有学生的平均分数。结果将显示每个人的平均分数。我希望你知道我的意思

2 个答案:

答案 0 :(得分:1)

标准化设计可能如下所示:

DROP TABLE IF EXISTS my_table;

CREATE TABLE student_scores
(student_id INT NOT NULL
,course_id INT NOT NULL
,score INT NOT NULL
);

INSERT INTO student_scores VALUES
(1,1,85),
(2,1,56),
(3,1,23),
(1,2,90),
(2,2,85),
(3,2,74),
(1,3,73),
(2,3,86),
(3,3,54),
(1,4,99),
(2,4,96),
(3,4,88);

从这里开始,计算每个学生的平均分数应该是显而易见的。

答案 1 :(得分:0)

您可以通过这种方式编写查询

select  student_id,
        (c1 + c2 + c3 + c4) / 4 as averageScore
from    yourTable

如果你想要整体平均值,你可以这样做

select  sum(c1) + sum(c2) + sum(c3) + sum(c4) / (count(distinct student_id) * 4)
from    yourTable

修改

要获得所有学生中每列的平均值,您可以使用avg聚合函数

select  avg(c1) as avg_c1,
        avg(c2) as avg_c2,
        avg(c3) as avg_c3, 
        avg(c4) as avg_c4
from    yourTable