首页 > 解决方案 > 为什么 sum() 函数在这种情况下没有给出确切的值?

问题描述

表explain_term_result_sheet

select s_id, s_f_name, s_l_name, s_roll_no, s_class, 
       SUM(mid_1_english + mid_2_english)/2 as mid_english, 
       SUM(mid_1_mathematics + mid_2_mathematics)/2 as mid_mathematics,
       semester_final_english,
       semester_final_mathematics,
       SUM((mid_1_english + mid_2_english)/2 + semester_final_english) as total_english, 
       SUM((mid_1_mathematics + mid_2_mathematics)/2 + semester_final_mathematics) as total_mathematics,
       SUM((mid_1_mathematics + mid_2_mathematics)/2 + (mid_1_english + mid_2_english)/2 + semester_final_mathematics + semester_final_mathematics) as total
from elaborate_term_result_sheet 
group by s_f_name, s_l_name
order by s_roll_no;

运行创建的此查询后,它确实显示了输出,但值有点波动

查询结果

mid_1_english + mid_2_english = mid_english

mid_1_mathematics + mid_2_mathematics = mid_mathematics

mid_english + term_final_english = total_english

mid_mathematics + term_final_mathematics = total_mathematics

总计 = total_english + total_mathematics

标签: mysqlsqlrdbms

解决方案


select s_id, s_f_name, s_l_name, s_roll_no, s_class, 
   SUM(mid_1_english + mid_2_english)/2 as mid_english, 
   SUM(mid_1_mathematics + mid_2_mathematics)/2 as mid_mathematics,
   semester_final_english,
   semester_final_mathematics,
   SUM((mid_1_english + mid_2_english)/2 + semester_final_english) as total_english, 
   SUM((mid_1_mathematics + mid_2_mathematics)/2 + semester_final_mathematics) as total_mathematics,
   SUM((mid_1_english + mid_2_english)/2 + semester_final_english + (mid_1_mathematics + mid_2_mathematics)/2 + semester_final_mathematics) as total from result_sheet_1 group by s_f_name, s_l_name order by s_roll_no;

提供正确输出的唯一更改是

SUM((mid_1_english + mid_2_english)/2 + semester_final_english + (mid_1_mathematics + mid_2_mathematics)/2 + semester_final_mathematics) as total

此查询的输出快照


推荐阅读