Ответ 1
Сумма - это совокупная функция. Вам не нужно использовать его. Это простой запрос -
select *,(maths + chemistry + physics ) AS total FROM `student`
Это мои данные таблицы Student
И это мой запрос -
SELECT id, SUM( maths + chemistry + physics ) AS total, maths, chemistry, physics
FROM `student`
но он бросает одну строку -
id total maths chemistry physics
118 760 55 67 55
хотя я хочу применить сумму для всех идентификаторов.... дайте мне знать, как я могу это достичь?
Сумма - это совокупная функция. Вам не нужно использовать его. Это простой запрос -
select *,(maths + chemistry + physics ) AS total FROM `student`
Если вам требуется получить итоговые оценки каждого ученика, то SUM
не то, что вам нужно.
SELECT id,
(maths+chemistry+physics) AS total,
maths,
chemistry,
physics
FROM `student`
Выполняет эту работу просто отлично.
Вам не нужно использовать SUM
для этой операции. Попробуйте этот запрос:
SELECT id, ( maths + chemistry + physics ) AS total, maths, chemistry, physics
FROM `student`
Подсказка: если одно из полей может иметь значение NULL, используйте COALESCE, чтобы установить для них значение по умолчанию 0, иначе total
приведет к NULL.
SELECT *, (
COALESCE(maths, 0) +
COALESCE(chemistry, 0) +
COALESCE(physics, 0)
) AS total
FROM 'student'
Вся функция агрегата работает в строках, заданных командой rowname и group by operation. Вам нужна операция по отдельным строкам, которая не является опцией для какой-либо агрегатной функции.
Попробуй это
SELECT id, ( maths + chemistry + physics ) AS total, maths, chemistry, physics
FROM 'student'
Вы сделали. Спасибо
Функция суммы в MySQL работает в том смысле, что она дает вам сумму значений в столбце из вашего оператора select. Если вам нужно суммировать значения из строки в вашем запросе, просто используйте плюс (+
). Вам нужен этот запрос:
SELECT id, ('maths' +'chemistry'+'physics') AS 'total', 'maths', 'chemistry', 'physics'
FROM 'student';
Это даст вам необходимые результаты.