Ce sont mes données de table Student
Et voici ma requête -
SELECT id, SUM( maths + chemistry + physics ) AS total, maths, chemistry, physics
FROM `student`
mais il jette une seule rangée -
id total maths chemistry physics
118 760 55 67 55
bien que je veuille appliquer la somme pour tous les identifiants .... laissez-moi savoir comment puis-je y parvenir?
Sum est une fonction agrégée. Vous n'avez pas besoin de l'utiliser. Ceci est la requête simple -
select *,(maths + chemistry + physics ) AS total FROM `student`
Si vous souhaitez obtenir la note totale de chaque élève, alors SUM
n’est pas ce dont vous auriez besoin.
SELECT id,
(maths+chemistry+physics) AS total,
maths,
chemistry,
physics
FROM `student`
Fera le travail juste bien.
Vous n'avez pas besoin d'utiliser SUM
pour cette opération. Essayez cette requête:
SELECT id, ( maths + chemistry + physics ) AS total, maths, chemistry, physics
FROM `student`
Conseil: Si l'un des champs a la possibilité d'être NULL, utilisez COALESCE pour les définir par défaut à 0, sinon total
donnera NULL.
SELECT *, (
COALESCE(maths, 0) +
COALESCE(chemistry, 0) +
COALESCE(physics, 0)
) AS total
FROM `student`
Toutes les fonctions d'agrégat fonctionnent sur les lignes spécifiées par rowname et group by operation. Vous avez besoin d'opérer sur des lignes individuelles, ce qui n'est une option pour aucune fonction d'agrégation.
Essaye ça
SELECT id, ( maths + chemistry + physics ) AS total, maths, chemistry, physics
FROM `student`
Vous avez terminé. Merci