У меня есть следующий mysql-запрос для вычисления суммы баллов студентом. Запрос выполняется успешно, но выводит NULL в поле «Оценка».Почему Sum не работает с несколькими случаями в mysql?
Select regd, Subject, Section, Test_date,
SUM(t_scored+w_scored+f_scored+cce_scored) as Scoring
from
(SELECT regd, Subject, Section, Test_date,
SUM(CASE WHEN Name_of_exam IN ('First Unit Exam', 'Second Unit Exam', 'Third Unit Exam')
THEN Mark_score
END)/SUM(CASE WHEN Name_of_exam IN ('First Unit Exam', 'Second Unit Exam', 'Third Unit Exam')
THEN Full_Mark
END)*25 AS t_scored,
SUM(CASE WHEN Name_of_exam IN ('First Unit Exam', 'Second Unit Exam' 'Third Unit Exam')
THEN (Full_mark)
END) AS t_fm,
SUM(CASE WHEN Name_of_exam IN ('First Term Weekly Test', 'Second Term Weekly Test', 'Third Term Weekly Test', 'Final Term Weekly Test')
THEN Mark_score
END)/SUM(CASE WHEN Name_of_exam IN ('First Term Weekly Test', 'Second Term Weekly Test', 'Third Term Weekly Test', 'Final Term Weekly Test')
THEN Full_Mark
END)*25 AS w_scored,
SUM(CASE WHEN Name_of_exam IN ('First Term Weekly Test', 'Second Term Weekly Test', 'Third Term Weekly Test', 'Final Term Weekly Test')
THEN (Full_mark)
END) AS w_fm,
SUM(CASE WHEN Name_of_exam = 'Final Unit Exam'
THEN Mark_score
END)/SUM(CASE WHEN Name_of_exam = 'Final Unit Exam'
THEN Full_Mark
END)*25 AS f_scored,
SUM(CASE WHEN Name_of_exam = 'Final Unit Exam'
THEN (Mark_score)
END) AS score_m,
SUM(CASE WHEN Name_of_exam = 'CCE'
THEN Mark_score
END)/SUM(CASE WHEN Name_of_exam = 'CCE'
THEN Full_Mark
END)*25 AS cce_scored,
SUM(CASE WHEN Name_of_exam = 'CCE'
THEN (Full_mark)
END) AS cce_fm
FROM kg2_exam
WHERE regd='2275' AND Subject not in ('Music','Handwriting','Colouring'))t
group by Subject
Как вы можете видеть из моего кода, я хочу, чтобы сумма t_scored + w_scored + f_scored + cce_scored. Но здесь код выводит только NULL, тогда как в некоторых полях Mark_score и Full_Mark есть значения. Любая помощь и советы очень приветствуются.
@Skriptajs Первая часть кода SUM (t_score + ... - это тот, который не работает. –
Я обновил свой ответ. Вы должны найти, откуда находятся значения NULL. – Skriptotajs
Большое спасибо, вы действительно спасли мой день. –