Fonction de décalage SQL

Fonction de décalage SQL

La fonction de décalage dans SQL vous permet de récupérer la ligne précédente à un décalage spécifique de la ligne actuelle. Cela signifie que vous pouvez accéder à la ligne précédente à partir de la ligne actuelle. Vous pouvez également spécifier un décalage particulier pour accéder au deuxième, troisième, etc.

Discutons de la façon dont nous pouvons utiliser la fonction LAG dans SQL.

Syntaxe de fonction

La syntaxe de fonction est comme indiqué:

LAG (scalar_expression [, offset] [, par défaut])
Over ([partition_by] order_by);

Les paramètres de fonction sont exprimés comme indiqué ci-dessous:

  1. Scalar_Expression - se réfère à la valeur de retour en fonction d'un décalage spécifié de la ligne actuelle.
  2. Compenser - définit le nombre d'éléments précédents à partir de la ligne actuelle à partir de laquelle accéder aux valeurs. Par défaut, SQL utilisera une valeur de décalage de 1.
  3. Défaut - Définit la valeur par défaut si la valeur de décalage est au-delà de la portée de la partition. La valeur par défaut est nul.
  4. Partitionner par - partitiones les données en une ou plusieurs partitions en fonction de la condition spécifiée.
  5. Commandé par - Expression pour commander les données dans chaque partition.

Exemple 1

Supposons que nous ayons un tableau contenant des données des employés comme indiqué:

Pour obtenir les noms d'employés actuels et précédents, nous pouvons exécuter la requête comme indiqué:

Sélectionnez Full_name, LAG (Full_name)
Over (partition by catégorie ordonnance par id) comme prev_emp
Des employés;

Le code ci-dessus doit renvoyer les noms des employés actuels et précédents dans chaque partition.

La sortie est comme indiqué:

Exemple 2

S'il n'y a pas de ligne précédente dans la partition, la fonction renverra null. Si nous souhaitons définir une valeur pour les lignes inexistantes, nous pouvons définir le paramètre par défaut comme indiqué:

Sélectionnez Full_name, LAG (Full_name, 1, «Personne disparue»)
Over (partition by catégorie ordonnance par id) comme prev_emp
Des employés;

Cela devrait remplacer les valeurs nuls par 'personne disparue.'La sortie sera présentée ci-dessous:

Exemple 3

Supposons que nous voulons accéder à deux lignes de la ligne actuelle? Nous pouvons le faire en spécifiant le décalage comme indiqué:

Sélectionnez Full_name, LAG (Full_name, 2, 'N / A')
Over (partition by catégorie ordonnance par id) comme prev_emp
Des employés;

La requête ci-dessus devrait revenir à deux lignes et sélectionner sa valeur.

Sortir:

Conclusion

Dans cet article, vous avez appris à utiliser la fonction SQL LAG () pour accéder à la ligne précédente à partir de la ligne actuelle.

Merci d'avoir lu!!