Fonctions LEAD et LAG
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 avec n étapes en arrière ou n étapes en avant.
Par exemple, si nous voulons calculer le ratio du chiffre d’affaires d’une entreprise pour la ligne actuelle et il y a un mois, 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 manière, 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 :
air_conditioners:id,efficiency,strength,month
Comparez l’efficacité de chaque climatiseur avec celle du précédent.
Écrivez une requête qui affiche l’efficacité de chaque climatiseur ainsi que celle du climatiseur précédent installé (en fonction de id). Calculez également la différence d’efficacité entre le climatiseur actuel et le précédent. Triez le résultat par id et efficiency dans l’ordre croissant.
Colonnes de sortie attendues :
idefficiencyprevious_efficiency(à l’aide de LAG)efficiency_difference(efficacité actuelle - efficacité précédente)
Enfin, encapsulez la requête et filtrez la première ligne, dont previous_efficiency (et donc efficiency_difference) est vide, c’est-à-dire NULL :
SELECT * FROM (
-- Your query here
)
WHERE previous_efficiency IS NOT NULLEssayez 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
1Introduction
IntroductionQu’est-ce qu’une base de donnéesConcepts des bases de donnéesValeurs uniques4D’autres mots-clés
Le mot-clé INLe mot-clé BETWEENLe mot-clé LIKELe mot-clé ASRécapitulatif - Modèles de téléphones portables2Conditions
Bases des conditionsLe mot-clé ANDLe mot-clé ORLe mot-clé NOTCombinaison de plusieurs conditionsParenthèsesBooléens5Opérations arithmétiques
Opérateurs mathématiquesColonnes mathématiquesL’opération moduloLa fonction ROUND()8Statistiques
Agrégats intégrés, partie 1Agrégats intégrés, partie 2Regroupement, partie 1Regroupement, partie 2Sous-requêtes, partie 1Sous-requêtes, partie 2Récapitulatif - Boutique Total GainRécapitulatif - Boutique de scootersRécapitulatif - Café11Fonctions de fenêtre, partie 1
Fonction ROW_NUMBERCritère ORDER BYCritère PARTITION BYPARTITION et ORDERFonctions LEAD et LAGRécapitulatif - LEAD et LAGRécapitulatif - ImagesRécapitulatif - Boîtes3Format de retour spécifique
Valeurs NULLTrier les résultats, partie 1Trier les résultats, partie 2Récapitulatif - Entreprise de cybersécuritéLimiter le nombre d’enregistrementsRécapitulatif - Usine de véhicules6Défis d’introduction
Récapitulatif - Élection parlementaireRécapitulatif - Arrestation criminelle par la policeRécapitulatif - Récipient de boisson au barRécapitulatif - Ingénieur de nouvelles colonnes9Tables multiples
Jointure de base, partie 1Jointure de base, partie 2Récapitulatif - JointureAuto-jointureRécapitulatif - Auto-jointureUnionSimplifier les requêtes, mot-clé WITHRécapitulatif - Requêtes WITHRécapitulatif - Entrepreneur immobilier12Fonctions de fenêtre – partie 2
Fonctions RANK & DENSE_RANKRécapitulatif – RANK & DENSE_RANKFonction NTILEFonctions d’agrégationCritère ROWS & RANGEEntraînez-vous par vous-même : Playground SQL