web-dev-qa-db-fra.com

Comment ajouter des valeurs de colonne dans mysql

Ce sont mes données de table Student

enter image description here

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?

23
Trialcoder

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`
62
Piyu

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.

10
hjpotter92

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`
8
khomyakoshka

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`
4
digout

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. 

0
Saikat Biswas

Essaye ça

SELECT id, ( maths + chemistry + physics ) AS total, maths, chemistry, physics
FROM `student`

Vous avez terminé. Merci

0
Y. Joy Ch. Singha