分组,求和和计算SQL语句的更有效方法

时间:2018-08-13 08:13:11

标签: mysql

有没有更有效的方式(处理器时间)来编写此语句?

SELECT student_year, 
    student_id, 
    sum(score_0)/sum(exam), 
    sum(score_1)/sum(exam), 
    sum(score_2)/sum(exam), 
    sum(score_3)/sum(exam)
FROM student_scores
WHERE student_year = 2018 AND exam > 0
group BY student_year, student_id;

行看起来像这样:

STUD_YEAR STUD_ID SCORE0 SCORE1 SCORE2 SCORE3 EXAM
2018      21354   17     21     19     25     1
2018      21354   22     19     0      23     1
2018      21354   0      0      0      0      0
2018      67864   10     15     10     20     1

对于学生21354 计算将是

(17+22+0)/(1+1+0), (21+19+0)/(1+1+0), (19+0+0)/(1+1+0), (25+23+0)/(1+1+0)

输出将是

19.5, 20, 21.5, 24

将其放在上下文中的旁注。 一个学生每年可以参加几次考试,每个考试包括4个部分,分别评分。

0 个答案:

没有答案