LEAD & LAG Functions
Fait partie de la section Les fondamentaux du Journey SQL de Coddy — leçon 61 sur 72.
Les fonctions LEAD et LAG nous permettent d'accéder à la valeur de la ligne actuelle de n étapes en arrière ou de n étapes en avant.
Par exemple, si nous voulons calculer le ratio du chiffre d'affaires d'une entreprise pour la ligne actuelle et un mois auparavant, nous pouvons extraire la valeur du mois précédent :
| id | revenue | month |
| 1 | 532 | 5 |
| 2 | 492 | 6 |
| 3 | 393 | 7 |
| 4 | 723 | 8 |
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY idCela créera le tableau suivant :
| id | revenue | prev_month_revenue |
| 1 | 532 | |
| 2 | 492 | 532 |
| 3 | 393 | 492 |
| 4 | 723 | 393 |
De cette façon, nous pouvons calculer le ratio prev_month_revenue/revenue.
Si nous utilisions plutôt la fonction LEAD, elle prendrait le chiffre d'affaires du mois suivant pour chaque ligne :
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id| id | revenue | next_month_revenue |
| 1 | 532 | 492 |
| 2 | 492 | 393 |
| 3 | 393 | 723 |
| 4 | 723 |
Défi
FacileTables et colonnes disponibles :
<strong>air_conditioners</strong>:<strong>id</strong>,<strong>efficiency</strong>,<strong>strength</strong>,<strong>month</strong>
Comparez l'efficacité de chaque climatiseur avec celui précédent.
Écrivez une requête qui affiche l'efficacité de chaque climatiseur ainsi que l'efficacité du climatiseur précédent installé (basé sur id). Calculez également la différence d'efficacité entre le climatiseur actuel et le précédent. Triez le résultat par <strong>id</strong> et <strong>efficiency</strong> par ordre croissant.
Colonnes de sortie attendues :
idefficiencyprevious_efficiency(en utilisant LAG)efficiency_difference(efficacité actuelle - efficacité précédente)
Enfin, après cette requête, filtrez la ligne où previous_efficiency est vide ou efficiency_difference est vide comme suit :
SELECT * FROM (
-- Your query here
)
WHERE previous_efficiency != 0Aide-mémoire
Les fonctions LAG et LEAD permettent d'accéder aux valeurs des lignes précédentes ou suivantes :
Fonction LAG - obtient la valeur de la ligne précédente :
LAG(column_name, n) OVER (ORDER BY column)Fonction LEAD - obtient la valeur de la ligne suivante :
LEAD(column_name, n) OVER (ORDER BY column)Exemple utilisant LAG pour obtenir le revenu du mois précédent :
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY month) as prev_month_revenue
FROM table1 ORDER BY idExemple utilisant LEAD pour obtenir le revenu du mois suivant :
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY idLa première ligne aura NULL pour la valeur LAG, et la dernière ligne aura NULL pour la valeur LEAD.
Essayez vous-même
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les fondamentaux
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function8Statistics
Built-In Aggregate Part 1Built-In Aggregate Part 2Grouping Part 1Grouping Part 2Subqueries Part 1Subqueries Part 2Recap - Total Gain ShopRecap - Scooter ShopRecap - Coffee Shop11Window Functions part 1
ROW_NUMBER functionORDER BY criterionPARTITION BY criterionPARTITION & ORDERLEAD & LAG FunctionsRecap - LEAD & LAGRecap - PicturesRecap - Boxes3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns