Avance SQL

Avance SQL

La fonction SQL Lead vous permet d'accéder à la ligne suivante à partir de la ligne actuelle à un décalage spécifique. En bref, la fonction de lead vous permet d'accéder à la ligne suivante à partir de la ligne actuelle. En spécifiant la valeur de décalage, vous pouvez accéder aux 1, 2, 3, etc. suivants., lignes du courant.

C'est l'opposé de la fonction LAG (), qui vous permet d'accéder aux lignes précédentes.

SQL Lead ()

La syntaxe de fonction est comme indiqué:

Lead (value_expression, offset [, par défaut])
SUR (
[Partition par partition_expression]
Ordre par Sort_Expression [ASC | Desc]
));

Voici les arguments pris en charge:

  1. valeur_expression - Spécifie la valeur de retour de la ligne précédente. L'expression doit évaluer à une seule valeur.
  2. compenser - Spécifie le nombre de lignes qui avancent de la ligne actuelle pour accéder.
  3. défaut - Définit la valeur par défaut si le décalage est en dehors de la portée de la partition. Par défaut, la valeur est définie sur null.
  4. Partitionner par - Spécifie comment partitionner les données.
  5. Commandé par - Définit le format de commande pour les lignes de chaque partition.

Exemple 1

Supposons que nous ayons un tableau contenant des informations sur les employés comme indiqué:

Pour accéder au nom suivant de l'employé, nous pouvons exécuter une requête comme indiqué:

SELECT ID, full_name, lead (full_name) sur (
partition par catégorie
Ordre par id ASC
) Comme next_employee
Des employés;

Le code ci-dessus partitionnera les données en fonction de la catégorie. Il va ensuite récupérer le nom suivant de la partition en utilisant la fonction de lead.

La sortie résultante est comme indiqué:

Exemple 2

S'il n'y a pas de ligne suivante dans une colonne spécifique (hors du limit), la fonction définira la valeur sur NULL, comme indiqué ci-dessus.

Pour définir une valeur par défaut pour tout accès hors score, nous pouvons effectuer ce qui suit:

SELECT ID, full_name, lead (full_name, 1, 'n / a') sur (
partition par catégorie
Ordre par id ASC
) Comme next_employee
Des employés;

Nous définissons la valeur par défaut sur «n / a». Cela devrait remplacer toute valeur hors limite comme indiqué dans la sortie:

NOTE: La définition du décalage sur 1 est similaire à ne spécifier aucune valeur.

Exemple 3

Supposons que vous souhaitiez accéder aux deux lignes suivantes à partir de la ligne actuelle? Nous pouvons le faire en définissant la valeur de décalage sur 2.

Un exemple de requête est illustré ci-dessous:

SELECT ID, full_name, lead (full_name, 2, 'n / a') sur (
partition par catégorie
Ordre par id ASC
) Comme next_employee
Des employés;

Cette requête renverra les deux lignes suivantes dans chaque partition comme indiqué ci-dessous: