MySQL数据库中每个学生的不同科目的不同表格列中不同评估类型的平均值

时间:2016-09-07 01:55:35

标签: mysql database

enter image description here

上面的图片是我的表格的快照,我需要协助如何计算每个学生的每个科目的测试类型总和的平均值。不知道这是否有意义。像这样的东西;

home_work + class_work + test + exam = Total(所有科目)

然后为每个学生:

AVG(总(农业)+总计(B.std)+总计(Econs)+总计(F& N))=平均值

我需要将输出按最高得分排列到最低,看起来像这样;

first_name last_name Overall_Total Overall_Average

我真的很感激任何帮助,对MySQL来说还是一个新手。

我终于尝试了以下命令:

SELECT student_id,AVG(home_work + class_work + test + exam)AS平均FROM分数GROUP BY student_id;

它为我提供了我想要的"平均值"在下面的图片上。

[enter image description here

但是,我还需要帮助才能从student_info表中添加first_name和last_name。

2 个答案:

答案 0 :(得分:0)

假设您的分数表每个学生/科目有一行,您可以尝试:

SELECT
    i.first_name,
    i.last_name,
    SUM(s.home_work + s.class_work + s.test + s.exam) AS Overall_Total,
    AVG(s.home_work + s.class_work + s.test + s.exam)/4 AS Overall_Average
FROM scores s
JOIN student_info i ON s.student_id = i.student_id
GROUP BY s.student_id
ORDER BY Overall_Average DESC

Overall_Average除以4,因为MySQL将计算4个分数之和的平均值(因为我将它们加在一起)并且不会将它们视为4个单独的分数。

答案 1 :(得分:0)

谢谢大家的帮助。这最终解决了我的问题。

选择 student_info.first_name,student_info.last_name,scores.student_id,AVG(home_work + class_work + test + exam)AS average FROM分数,student_info WHERE student_info.student_id = scores.student_id GROUP BY student_id 按平均DESC订购;