Maison > Article > base de données > Comment utiliser la fonction sum() dans MySQL
Dans mysql, la fonction sum() est utilisée pour calculer la somme d'un ensemble de valeurs ou d'expressions. La syntaxe est "SUM (DISTINCT expression)". . La fonction sum() doit être utilisée avec l'instruction SELECT. Si la fonction SUM() est utilisée dans une instruction SELECT qui ne renvoie pas de lignes correspondantes, la fonction SUM() renverra NULL au lieu de 0 ; La fonction ignorera les colonnes lors du calcul des lignes avec une valeur NULL.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
fonction mysql sum()
La fonction SUM() est utilisée pour calculer la somme d'un ensemble de valeurs ou d'expressions. La syntaxe de la fonction SUM() est la suivante :
SUM(DISTINCT expression)
Paramètres | Description |
---|---|
expression | Obligatoire. Champ ou formule |
Comment fonctionne la fonction SUM() ?
Si vous utilisez la fonction SUM dans une instruction SELECT qui ne renvoie aucune ligne correspondante, la fonction SUM renvoie NULL au lieu de 0.
L'opérateur DISTINCT permet de calculer des valeurs distinctes dans un ensemble. La fonction
SUM() ignorera les lignes avec des valeurs de colonne NULL lors du calcul.
Exemple d'utilisation de la fonction sum()
Afin de faciliter la compréhension, créez d'abord un tableau de scores des étudiants tb_students_score Le contenu des données du tableau des scores des étudiants est le suivant
mysql> SELECT * FROM tb_students_score;
Utilisez la somme. () dans Le score total des notes des étudiants est calculé dans la table tb_students_score
mysql> SELECT SUM(student_score) AS score_sum FROM tb_students_score;
Comme le montrent les résultats de la requête, la fonction SUM() renvoie la somme de toutes les notes des étudiants comme 942.
Connaissances approfondies :
MySQL SUM avec clause GROUP BY
Lorsqu'elle est combinée avec la clause GROUP BY, la fonction SUM() calcule la somme pour chaque regroupement spécifié dans la clause GROUP BY. Par exemple, le montant total de chaque commande peut être calculé à l'aide de la fonction SUM avec une clause GROUP BY comme suit :
SELECT orderNumber, FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails GROUP BY orderNumber ORDER BY SUM(quantityOrdered * priceEach) DESC;
Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants :
+-------------+-----------+ | orderNumber | total | +-------------+-----------+ | 10165 | 67,392.85 | | 10287 | 61,402.00 | | 10310 | 61,234.67 | | 10212 | 59,830.55 | *** 此处省略了一大波数据 ***** | 10116 | 1,627.56 | | 10158 | 1,491.38 | | 10144 | 1,128.20 | | 10408 | 615.45 | +-------------+-----------+ 327 rows in set
MySQL SUM avec HAVING
Vous Vous pouvez utiliser la clause HAVING dans la fonction SUM pour filtrer les résultats en fonction de critères spécifiques. Par exemple, vous pouvez calculer la quantité totale de la commande et sélectionner uniquement les commandes dont le montant total est supérieur à 60 000. L'instruction de requête suivante -
SELECT orderNumber, FORMAT(SUM(quantityOrdered * priceEach),2) FROM orderdetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 60000 ORDER BY SUM(quantityOrdered * priceEach);
Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -
MySQL SUM et LIMIT
Supposons que vous souhaitiez calculer la somme des dix produits les plus chers du marché. products, vous pouvez créer la requête suivante :
SELECT SUM(buyprice) FROM products ORDER BY buyprice DESC LIMIT 10;
Exécutez l'instruction de requête ci-dessus et obtenez le résultat suivant -
Cela ne fonctionne pas car l'instruction SELECT avec la fonction SUM ne renvoie qu'une seule ligne et la clause LIMIT la contrainte sur le nombre de lignes à renvoyer n'est pas valide. Pour résoudre ce problème, utilisez la sous-requête suivante :
SELECT FORMAT(SUM(buyprice),2) FROM (SELECT buyprice FROM products ORDER BY buyprice DESC LIMIT 10) price;
Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -
Comment l'instruction ci-dessus s'exécute-t-elle ? La sous-requête sélectionne les dix produits les plus chers. La requête externe calcule la somme des 10 produits les plus chers renvoyés par la sous-requête.
MySQL SUM vs NULL
S'il n'y a pas de lignes correspondantes, la fonction SUM renvoie une valeur NULL. Parfois, vous souhaitez que la fonction SUM renvoie 0 au lieu de NULL. Dans ce cas, vous pouvez utiliser la fonction COALESCE. La fonction COALESCE accepte deux paramètres. Si le premier paramètre est NULL, le deuxième paramètre est renvoyé, sinon le premier paramètre est renvoyé ; reportez-vous à l'instruction de requête suivante :
SELECT COALESCE(SUM(quantityOrdered * priceEach),0) FROM orderdetails WHERE productCode = 'S1_212121';
Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants :
【Recommandation associée : tutoriel vidéo mysql】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!