Maison >base de données >tutoriel mysql >Comment puis-je calculer la différence entre des lignes consécutives dans une instruction SQL SELECT ?
Calcul des différences entre les lignes séquentielles dans les requêtes SQL
Déterminer efficacement la différence entre les valeurs des lignes adjacentes dans une instruction SQL SELECT
est réalisable à l'aide de la fonction de fenêtre LAG()
. Cette approche simplifiée évite les complexités des sous-requêtes ou des tables temporaires.
Considérons un tableau avec des colonnes Id
et Value
. Pour calculer la différence entre le Value
d'une ligne et le Value
de la ligne précédente, utilisez cette syntaxe SQL :
<code class="language-sql">SELECT Value - LAG(Value) OVER (ORDER BY Id) AS Difference FROM your_table;</code>
La fonction LAG(Value)
récupère le Value
de la ligne précédant la ligne actuelle, classé par la colonne Id
. En soustrayant cette valeur décalée du Value
actuel, on obtient la différence.
Il est crucial de noter la clause ORDER BY
dans la fonction OVER()
. Si votre colonne Id
n'est pas une séquence continue, utiliser Id - 1
serait inexact. LAG()
gère de manière fiable les lacunes dans la séquence en référençant la ligne précédente en fonction de l'ordre spécifié.
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!