Décalage postgresql

Décalage postgresql

La fonction LAG PostgreSQL () est utilisée pour accéder à la ligne dans la table qui est présente avant la ligne actuelle de la table. Comme son nom indique qu'il est en retard sur la ligne actuelle et prend l'enregistrement du tableau. Dans PostgreSQL, la fonction de décalage est importante pour qu'il compare les lignes précédentes avec la ligne actuelle.

Cette fonction convient pour connaître les données que vous avez saisies précédemment, mais sont présentes dans la ligne actuelle. Alors vous pouvez accéder aux données du passé. Ouvrez PSQL, et après avoir fourni un mot de passe, vous pouvez désormais appliquer toutes les commandes sur le shell PSQL.

Syntaxe

LAG (expression [offset [valeur]])
SUR (
[Partition par expression,…]
Ordre par expression [ASC | Desc],…
)

Un décalage est un numéro entier défini dans la requête et affiche le nombre de lignes présentes au-dessus de la ligne actuelle. Cela peut être une sous-requête ou une expression.

La fonction de décalage est appliquée à la partition de valeur, qui est principalement créée par une clause de partition. Dans le même temps, la clause Order By est utilisée pour organiser les lignes dans un ordre spécifié.

Il y a deux caractéristiques principales de la fonction LAG que nous avons décrite ici sont:

  • Partition par défaut de décalage
  • La fonction de décalage dans les partitions.

partition par défaut de décalage

Nous avons une table nommée «Showroom» ayant les détails des véhicules. La table est créée par la requête «Créer un tableau» dans PSQL et en ajoutant les données à l'aide d'une instruction «INSERT».

>> Sélectionner * dans Showroom;

Nous appliquerons la fonction de décalage sur la table. La fonction de décalage contient deux ou plusieurs instructions «Sélectionner». Comme nous devons sélectionner la valeur avant la ligne actuelle, la ligne actuelle est sélectionnée dans la première étape, puis la ligne avant elle.

Exemple 1

Dans cet exemple, nous sélectionnerons une colonne dans le tableau et calculerons la somme de la colonne de prix. La deuxième instruction SELECT utilisera la fonction LAG. Ces deux instructions utilisent la clause «Order by» avec «groupe par» dans la fonction agrégée de Select. Comme aucune année n'est similaire à l'autre, toutes les lignes seront affichées. Il n'y aura pas de groupe. Maintenant, nous appliquons la commande sur la table:

>> avec CTE comme (Sélectionner l'année, somme (prix) Prix du groupe d'exposition par an de commande par année) Sélectionnez l'année, prix, décalage (prix, 1) sur (commande par année) PRETEAD_YEAR_DISCOUNT de CTE;

Pour imprimer la valeur de la ligne au-dessus de la ligne actuelle, nous avons d'abord accès à la ligne actuelle via l'instruction SELECT et avons calculé la fonction de somme. La valeur obtenue est stockée dans «CTE» pour une utilisation ultérieure dans cette dernière requête. La valeur résultante sera commandée et regroupée par la colonne «l'année».

En se déplaçant vers la deuxième instruction SELECT, les mêmes colonnes dans «CTE» sont sélectionnées dans le tableau. Une colonne supplémentaire est créée avec le nom «Précéaire_year_discount» ayant du retard avec 1 ligne. Et les lignes de la colonne résultante doivent être organisées par la colonne de l'année.

Vous pouvez voir dans la table obtenue que la première ligne de la nouvelle colonne est blanchie. Parce que le prix est déplacé vers la ligne suivante depuis le début en faisant la première rangée nul.

Exemple 2

Il y a un autre exemple; Ici, nous utilisons trois instructions sélectionnées. «CTE» et «cye» sont utilisés pour stocker les valeurs obtenues à partir des deux requêtes à l'aide de l'instruction «SELECT», et leurs valeurs résultantes seront utilisées dans la troisième instruction SELECT. La sortie de «CTE» agit comme une sortie pour «CTE2». De même, «CTE2» sera l'entrée de la troisième instruction SELECT. Toutes les valeurs sont affichées dans le tableau résultant combiné car un résultat est une fonction de décalage, tandis que la deuxième colonne résultante montre la différence entre les deux valeurs de décalage.

Se déplacer vers le premier «CTE» calcule la même fonction que l'exemple précédent. La somme est calculée à partir de la colonne «Prix».

>> avec le CTE comme (SELECT année, somme (prix) Prix du groupe d'exposition par an,

Le deuxième «CTE2» est similaire à la deuxième commande SELECT car nous savons que la fonction de décalage est appliquée sur la somme de la colonne «Prix». La colonne de cette somme «Précéaire_year_discount» est stockée comme dans CTE.

>> CTE2 As (SELECT année, prix, décalage (prix, 1) sur (ordonnance par année) Précéaire_year_discount de CTE)

La troisième déclaration «sélectionner» prendra la somme des prix décalée et calculera leur différence. Par exemple, le prix de la troisième ligne soustrait la valeur de la deuxième ligne. En même temps, la première ligne est nul en raison de la fonction de décalage.

>> Sélectionnez l'année, prix, précédemment_year_discount, (précédemment_year_discount - prix) Différence par rapport à CTE;

La 4ème colonne est nommée la différence car elle utilise l'opérateur moins pour soustraire les valeurs de la 3e colonne.

Pour chaque ligne, la valeur de la 3ème colonne est soustraite de la ligne précédente. Par exemple (3e-2e), (4e -3e), et ainsi de suite. Et la valeur soustraite est écrite devant la première valeur (soustraite de la valeur suivante). Mais dans le 6ème, la dernière ligne de la colonne «Différence», la réponse est écrite qui est obtenue en soustrayant la 1ère ligne de la 2ème rangée, la valeur de l'an 2021.

Exemple 3

Considérez un autre exemple dans lequel le même concept est appliqué à la table. Mais le décalage est 2 au lieu d'un. Une seule instruction SELECT affiche les prix, pas la somme ou toute autre fonction agrégée.

>> Sélectionner l'année, prix, décalage (prix, 2) réduction (commande par année) de la salle d'exposition;

La valeur résultante montre que le prix de la colonne de réduction est décalé deux lignes. Cela signifie que nous avons accédé aux lignes avant la rangée actuelle de la table.

Fonction de décalage dans les partitions

Via pgadmin

Dans Pgadmin, après avoir fourni le mot de passe, vous pouvez désormais accéder à la base de données et à tout le contenu présent dedans. Accédez à l'outil de requête des tables. Créez maintenant de nouveaux noms de table «Team_members».

>> Créer une table Team_Members (nom varchar (100), id int, anney entier, entier salarial);

Après avoir créé le tableau, ajoutez maintenant des valeurs à la table.

>> Insérer dans Team_Members (nom, id, année, salaire) Valeurs («Salar», 1, 2018, 180000);

Une fois les valeurs insérées, appliquez maintenant la requête.

La fonction LAG () dans ce type compare le salaire d'un an avec la dernière année de chaque groupe.

>> SELECT année, salaire, id, décalage (salaire, 1) sur la partition par id (commande par année) réduction de Team_members;

Dans cet exemple, les identifiants sont regroupés collectivement. La partition distribuera les lignes dans le groupe, car vous pouvez voir que tous les mêmes identifiants sont présents ensemble. Et la colonne de réduction montre la comparaison du salaire d'une rangée avec la deuxième rangée, ayant le décalage de 1.

Conclusion

«Fonction lag» est utilisée pour récupérer l'enregistrement que vous avez entré avant la ligne actuelle que vous avez sélectionnée. Deux catégories principales de fonction de décalage sont discutées ici avec des exemples. SELECT, Order By sont utilisés en plus avec la «clause de partition by». Cette fonction dans PostgreSQL peut être appliquée dans le tableau et ensuite appliquer des opérations différentes sur eux.