La fonction SQL LAG() est une fonction de fenêtre qui donne accès à une ligne à un décalage physique spécifié qui précède la ligne actuelle .
la molette de la souris ne défile pas correctement
Fonction LAG dans SQL Server est utilisé pour comparer les valeurs de la ligne actuelle avec les valeurs de la ligne précédente.
Syntaxe
Le Syntaxe de la fonction LAG est:
.LAG (expression_scalaire [, offset [, par défaut ]]) OVER ( [ partition_by_clause ] order_by_clause )
Où :
- expression_scalaire – La valeur à renvoyer en fonction du décalage spécifié.
- compenser - Nombre de lignes en arrière de la ligne actuelle à partir desquelles obtenir une valeur. S’il n’est pas spécifié, la valeur par défaut est 1.
- défaut - default est la valeur à renvoyer si le décalage dépasse la portée de la partition. Si aucune valeur par défaut n'est spécifiée, NULL est renvoyé.
- partition_by_clause : Clause facultative qui divise le jeu de résultats en partitions. La fonction LAG() est appliquée à chaque partition séparément.
- commande_par_clause : L'ordre des lignes dans chaque partition. Ceci est obligatoire et doit être précisé.
Exemple de fonction SQL LAG()
Examinons quelques exemples de fonction SQL LAG et comprenons comment utiliser la fonction LAG dans SQL Server.
Exemple 1
SELECT Organisation, [Year], Revenue, LAG (Revenue, 1, 0) OVER ( PARTITION BY Organisation ORDER BY [Year]) AS PrevYearRevenue FROM Org ORDER BY Organisation, [Year];>
Sortir:
| Organisation | Année | Revenu | Revenu de l'année précédente |
|---|---|---|---|
| Actualités ABCD | 2013 | 440000 | 0 |
| Actualités ABCD | 2014 | 480000 | 440000 |
| Actualités ABCD | 2015 | 490000 | 480000 |
| Actualités ABCD | 2016 | 500000 | 490000 |
| Actualités ABCD | 2017 | 520000 | 500000 |
| Actualités ABCD | 2018 | 525000 | 520000 |
| Actualités ABCD | 2019 | 540000 | 525000 |
| Actualités ABCD | 2020 | 550000 | 540000 |
| Z Actualités | 2016 | 720000 | 0 |
| Z Actualités | 2017 | 750000 | 720000 |
| Z Actualités | 2018 | 780000 | 750000 |
| Z Actualités | 2019 | 880000 | 780000 |
| Z Actualités | 2020 | 910000 | 880000 |
Dans l'exemple ci-dessus, nous avons 2 chaînes d'information télévisée dont les revenus de l'année en cours et de l'année précédente sont présentés sur la même ligne à l'aide de la fonction LAG(). Comme vous pouvez le voir, le tout premier enregistrement de chacune des chaînes d'informations télévisées n'a pas de revenus de l'année précédente et affiche donc la valeur par défaut de 0. Cette fonction peut être très utile pour générer des données pour les rapports BI lorsque vous souhaitez comparer les valeurs. sur des périodes consécutives, par ex. Comparaisons année sur année ou trimestre sur trimestre ou quotidiennes.
Exemple 2
SELECT Z.*, (Z.Revenue - z.PrevYearRevenue) as YearonYearGrowth FROM (SELECT Organisation, [Year], Revenue, LAG (Revenue, 1) OVER ( PARTITION BY Organisation ORDER BY [Year] ) AS PrevYearRevenue FROM Org) Z ORDER BY Organisation, [Year];>
Sortir:
| Organisation | Année | Revenu | Revenu de l'année précédente | Croissance Année sur Année |
|---|---|---|---|---|
| Actualités ABCD | 2013 | 440000 | NUL | NUL |
| Actualités ABCD | 2014 | 480000 | 440000 | 40000 |
| Actualités ABCD | 2015 | 490000 | 480000 | 10000 |
| Actualités ABCD | 2016 | 500000 | 490000 | 10000 |
| Actualités ABCD | 2017 | 520000 | 500000 | 20000 |
| Actualités ABCD | 2018 | 525000 | 520000 | 5000 |
| Actualités ABCD | 2019 | 540000 | 525000 | 15000 |
| Actualités ABCD | 2020 | 550000 | 540000 | 10000 |
| Z Actualités | 2016 | 720000 | NUL | NUL |
| Z Actualités | 2017 | 750000 | 720000 | 30000 |
| Z Actualités | 2018 | 780000 | 750000 | 30000 |
| Z Actualités | 2019 | 880000 | 780000 | 100000 |
| Z Actualités | 2020 | 910000 | 880000 | 30000 |
Dans l'exemple ci-dessus, nous pouvons calculer de la même manière la croissance annuelle de la chaîne d'information télévisée. De plus, une chose à remarquer dans cet exemple est que nous n'avons fourni aucun paramètre par défaut à LAG(), et par conséquent la fonction LAG() renvoie NULL au cas où il n'y aurait pas de valeurs précédentes. La fonction LAG() peut être implémentée au niveau de la base de données et les solutions de reporting BI comme Power BI et Tableau peuvent éviter d'utiliser les mesures lourdes au niveau de la couche de reporting.
Points importants concernant la fonction SQL LAG()
- La fonction SQL LAG() est une fonction de fenêtre qui permet aux utilisateurs d'accéder aux données des lignes précédentes d'un ensemble de données.
- Il permet aux utilisateurs de comparer les valeurs des lignes actuelles avec les valeurs des lignes précédentes, en particulier celles liées au temps ou à des colonnes spécifiques.
- La fonction LAG() est utile pour analyser les changements au fil du temps, tels que les données boursières, les tendances quotidiennes et les modifications dans plusieurs colonnes.