Maison > base de données > tutoriel mysql > Comment générer efficacement une colonne de somme cumulée dans MySQL ?

Comment générer efficacement une colonne de somme cumulée dans MySQL ?

Patricia Arquette
Libérer: 2025-01-22 10:01:09
original
404 Les gens l'ont consulté

How to Efficiently Generate a Cumulative Sum Column in MySQL?

Calcul des sommes cumulées dans MySQL : deux approches

Ce guide détaille deux méthodes efficaces pour générer des colonnes de somme cumulée dans les bases de données MySQL.

Méthode 1 : Utilisation de sous-requêtes corrélées

Cette approche utilise une sous-requête corrélée pour calculer la somme cumulée :

<code class="language-sql">SELECT t.id,
       t.count,
       (SELECT SUM(x.count)
          FROM TABLE x
         WHERE x.id <= t.id) AS cumulative_sum
FROM TABLE t
ORDER BY t.id;</code>
Copier après la connexion

La sous-requête corrélée, intégrée dans la clause AS, calcule dynamiquement la somme cumulée pour chaque ligne. Il additionne les valeurs count depuis le début du tableau jusqu'à et y compris le id de la ligne actuelle.

Méthode 2 : exploiter les variables MySQL

Les variables MySQL offrent une méthode alternative pour les calculs de sommes cumulées :

<code class="language-sql">SELECT t.id,
       t.count,
       @running_total := @running_total + t.count AS cumulative_sum
FROM TABLE t
JOIN (SELECT @running_total := 0) r
ORDER BY t.id;</code>
Copier après la connexion

Cette méthode initialise une variable MySQL, @running_total, à 0 à l'aide d'une jointure croisée. Au fur et à mesure que la requête parcourt chaque ligne de TABLE t, @running_total accumule les valeurs count, produisant la somme cumulée.

Considérations importantes :

  • L'utilisation des variables MySQL est spécifique à la base de données et peut ne pas être compatible avec d'autres systèmes de bases de données.
  • Les deux méthodes nécessitent une clause ORDER BY pour garantir un calcul précis de la somme cumulée. L'ordre des lignes dicte la séquence de sommation.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal