Maison >base de données >tutoriel mysql >Comment calculer la consommation en soustrayant les valeurs des lignes précédentes dans MySQL, regroupées par SN ?
Calcul de la consommation dans MySQL : soustraction des valeurs de la ligne précédente, regroupées par SN
Ce guide montre comment calculer la consommation en comparant des valeurs consécutives au sein de chaque SN
groupe dans une table MySQL. Les données comprennent les colonnes SN
(numéro de série) et Value
, représentant les mesures au fil du temps. Le but est de calculer la consommation de chaque SN
en soustrayant la valeur précédente de la valeur actuelle.
Voici une requête MySQL exploitant des variables définies par l'utilisateur pour y parvenir :
<code class="language-sql">SELECT EL.SN, EL.Date, EL.Value, IF(@lastSN = EL.SN, EL.Value - @lastValue, 0.00) AS Consumption, @lastSN := EL.SN, @lastValue := EL.Value FROM EnergyLog EL, (SELECT @lastSN := NULL, @lastValue := NULL) AS SQLVars ORDER BY EL.SN, EL.Date;</code>
Explication de la requête :
Initialisation des variables : La sous-requête (SELECT @lastSN := NULL, @lastValue := NULL) AS SQLVars
initialise les variables définies par l'utilisateur @lastSN
(pour suivre le SN
précédent) et @lastValue
(pour suivre le Value
précédent) à NULL
. L'utilisation de NULL
au lieu de 0 gère correctement la première ligne de chaque groupe SN
.
Traitement ligne par ligne : La requête principale parcourt la table EnergyLog
(alias EL
), classée par SN
et Date
.
Calcul de la consommation : L'instruction IF
vérifie si le SN
(EL.SN
) actuel correspond au SN
(@lastSN
) précédemment traité.
EL.Value - @lastValue
.SN
groupe), il fixe la consommation à 0,00.Mise à jour des variables : @lastSN := EL.SN
et @lastValue := EL.Value
mettent à jour les variables pour la comparaison de la ligne suivante.
Sortie : La requête renvoie les SN
, Date
, Value
et calculés Consumption
pour chaque ligne.
Cette approche calcule efficacement la consommation au sein de chaque SN
groupe à l'aide d'une seule requête, éliminant ainsi le besoin de sous-requêtes ou de jointures plus complexes. L'utilisation de variables définies par l'utilisateur rend le calcul concis et performant.
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!