Maison > base de données > tutoriel mysql > Comment calculer efficacement les totaux cumulés dans MySQL ?

Comment calculer efficacement les totaux cumulés dans MySQL ?

DDD
Libérer: 2025-01-22 06:26:08
original
271 Les gens l'ont consulté

How to Efficiently Calculate Running Totals in MySQL?

Total cumulé MySQL : solution utilisant des variables utilisateur

Cet article, initialement intitulé « Calcul d'un total cumulé dans MySQL », est destiné à ajouter une colonne à un tableau qui affiche la somme cumulée des valeurs de colonne précédentes. Cependant, la réponse fournie indique que l'utilisation de variables utilisateur dans les expressions est désormais obsolète et sera supprimée dans une prochaine version. Par conséquent, nous proposons une solution plus simple qui consiste à initialiser une variable de total cumulé et à exécuter une seule requête à l'aide de calculs mathématiques pour obtenir le résultat souhaité.

Les requêtes fournies sont les suivantes :

<code class="language-sql">SET @runtot:=0;
SELECT
   q1.d,
   q1.c,
   (@runtot := @runtot + q1.c) AS rt
FROM
   (SELECT
       DAYOFYEAR(`date`) AS d,
       COUNT(*) AS c
    FROM  `orders`
    WHERE  `hasPaid` > 0
    GROUP  BY d
    ORDER  BY d) AS q1</code>
Copier après la connexion

Cette requête initialise d'abord la variable utilisateur @runtot à 0 à l'aide d'une instruction SET. Il exécute ensuite une sous-requête pour récupérer les données nécessaires de la table des commandes. Enfin, la requête externe combine les résultats de la sous-requête avec un calcul du total cumulé.

Le tableau résultant contiendra une colonne supplémentaire appelée rt qui représente le total cumulé de la colonne c pour chaque ligne. Cette solution évite l'utilisation de variables utilisateur obsolètes dans les expressions et offre une approche plus efficace avec une seule exécution de requête.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal