首页 > 解决方案 > 一种对 SQL 语句进行分组、求和和计算的更有效方法

问题描述

是否有更有效的方法(处理器时间)来编写此语句?

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;

ROWS 看起来像这样:

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 个部分组成,分别计分。

标签: mysql

解决方案


推荐阅读