Dans ce tutoriel, nous nous concentrerons sur l'utilisation de l'une des fonctions MySQL: LAG (). Il s'agit d'une fonction de fenêtre qui vous permet d'accéder et de récupérer la valeur des lignes précédentes de la ligne actuelle dans le même ensemble de résultats.
Syntaxe de base
La syntaxe générale pour l'utilisation de la fonction MySQL LAG () est:
LAG (Expression, OffsetValue, DefaultVar) sur (Prenons un moment pour expliquer certains des paramètres de la syntaxe de la fonction LAG ().
Ils sont les suivants:
Expression: Ceci est la valeur renvoyée par la fonction de la ligne qui mène la ligne actuelle par la valeur de décalage spécifiée.
OffsetValue: Cette valeur représente le nombre de lignes précédant la ligne actuelle à partir de laquelle obtenir la valeur. Cette valeur doit être une valeur 0 ou une valeur supérieure à 0.
NOTE: La valeur de 0 représente la ligne actuelle.
Defaultvar: Cette valeur est renvoyée comme la valeur par défaut par la fonction si aucune ligne précédente n'existe. Si la valeur par défaut n'est pas définie dans le paramètre de fonction et qu'aucune ligne précédente n'existe, la fonction renvoie une valeur nul.
Partition par: La clause de partition by divise les lignes dans un ensemble de partition logique. La fonction de décalage est ensuite appliquée aux partitions divisées.
COMMANDÉ PAR: Comme d'habitude, cette valeur spécifie l'ordre des lignes dans les partitions disponibles.
Exemple de cas d'utilisation
Regardons les exemples de cas d'utilisation de la fonction LAG () pour comprendre comment cela fonctionne. Commencez par créer un exemple de base de données appelée Sample_DB;
Drop Database si existe Sample_Database;Maintenant que nous avons un exemple de base de données avec laquelle travailler, nous pouvons procéder et illustrer comment travailler avec la fonction MySQL LAG.
Exemple 1: fonction de décalage sans valeur par défaut
Considérez l'exemple ci-dessous qui applique la fonction de décalage sur le INSCH_DATE avec une valeur de décalage de 1.
Une fois que nous exécutons la requête ci-dessus, nous obtenons une nouvelle colonne précédente_Date qui contient la valeur précédente de la ligne comme spécifié avec une valeur de décalage de 1. Puisqu'il n'y a pas de valeur antérieure dans la première ligne, la valeur est nul.
Remarque: vous pouvez spécifier la valeur par défaut si une ligne n'a pas de valeur précédente.
La sortie est comme indiqué ci-dessous:
Exemple 2: fonction de décalage avec valeur par défaut
Vous pouvez également spécifier une valeur par défaut pour une ligne où la valeur précédente n'existe pas. Dans notre exemple, nous définirons la valeur par défaut à la date actuelle.
Remarque: Dans cet exemple, nous définirons également la valeur de décalage comme 2 au lieu de 1.
Considérez la requête ci-dessous:
SELECT *, LAG (ISCROLL_DATE, 2, CURDATE ()) sur (Ordre par id ASC) comme précédent_date de Sample_Database.utilisateurs;Une fois que nous exécutons la requête ci-dessus, nous allons obtenir des valeurs avec une valeur de décalage de deux et la date actuelle comme par défaut pour les valeurs nul.
La sortie est comme indiqué ci-dessous:
Exemple 3: fonction de décalage avec partition par
Nous pouvons utiliser la fonction LAG () avec la clause Partition par clause. Cette clause regroupe d'abord les données dans divers sous-ensembles logiques, puis applique la fonction de décalage aux partitions.
Avant de continuer, voyons les données dans le tableau de l'utilisateur. Considérez la requête suivante:
Insérer dans les utilisateurs (id, nom, score, inscrire_date)Maintenant que nous avons un tableau avec 10 valeurs, nous pouvons partitionner les données par le score, puis appliquer la fonction de décalage.
L'opération ci-dessus est illustrée dans la requête ci-dessous:
SELECT *, LAG (INCORL_DATE, 1, CURDATE ()) sur (partition par ordre de score par id ASC) comme précédent_date de Sample_Database.utilisateurs;Dans la requête ci-dessus, nous commençons par partitionner les données en fonction du score, puis appliquant la fonction de décalage avec une valeur de décalage de 1. Nous définissons également la valeur par défaut en tant que date en cours. Le résultat de sortie est comme indiqué ci-dessous:
Remarque: vous pouvez également noter que la première ligne de chaque partition contient la date actuelle, ce qui signifie qu'il n'y a pas de valeur antérieure dans la ligne définie.
Conclusion
Ce tutoriel a expliqué comment la fonction LAG () fonctionne pour obtenir des valeurs des lignes précédentes dans la ligne actuelle.
Récapituler:
Merci pour la lecture.