我将使用上面的例子让你清楚。
student_id | c1 | c2 | c3 | c4
1 | 85 | 90 | 73 | 99
2 | 56 | 85 | 86 | 96
3 | 23 | 74 | 54 | 88
我的问题是如何同时计算所有学生的平均分数。结果将显示每个人的平均分数。我希望你知道我的意思
答案 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