Funkcja SQL LAG(). to funkcja okna zapewniająca dostęp do wiersza o określonym fizycznym przesunięciu poprzedzającym bieżący wiersz .
lew w porównaniu do tygrysa
Funkcja LAG w SQL Server jest używany do porównaj wartości bieżącego wiersza z wartościami z poprzedniego wiersza.
Składnia
The Składnia funkcji LAG Jest:
.LAG (wyrażenie_skalarne [, przesunięcie [, domyślne ]]) OVER ( [partycja_po_klauzuli ] zamówienie_po_klauzuli )
Gdzie :
- wyrażenie_skalarne – Wartość, która ma zostać zwrócona na podstawie określonego przesunięcia.
- zrównoważyć - Liczba wierszy wstecz od bieżącego wiersza, z których ma zostać uzyskana wartość. Jeśli nie określono, wartością domyślną jest 1.
- domyślny - domyślna to wartość, która ma zostać zwrócona, jeśli przesunięcie wykracza poza zakres partycji. Jeśli nie określono wartości domyślnej, zwracana jest wartość NULL.
- partycja_by_klauzula: Opcjonalna klauzula dzieląca zbiór wyników na partycje. Funkcja LAG() jest stosowana do każdej partycji osobno.
- zamówienie_po_klauzuli: Kolejność wierszy w każdej partycji. Jest to obowiązkowe i należy je określić.
Przykład funkcji SQL LAG().
Przyjrzyjmy się kilku przykładom funkcji SQL LAG i zobaczmy, jak używać funkcji LAG w SQL Server.
Przykład 1
SELECT Organisation, [Year], Revenue, LAG (Revenue, 1, 0) OVER ( PARTITION BY Organisation ORDER BY [Year]) AS PrevYearRevenue FROM Org ORDER BY Organisation, [Year];>
Wyjście:
| Organizacja | Rok | Przychód | PoprzedniRokPrzychody |
|---|---|---|---|
| Wiadomości ABCD | 2013 | 440000 | 0 |
| Wiadomości ABCD | 2014 | 480000 | 440000 |
| Wiadomości ABCD | 2015 | 490000 | 480000 |
| Wiadomości ABCD | 2016 | 500 000 | 490000 |
| Wiadomości ABCD | 2017 | 520000 | 500 000 |
| Wiadomości ABCD | 2018 | 525000 | 520000 |
| Wiadomości ABCD | 2019 | 540000 | 525000 |
| Wiadomości ABCD | 2020 | 550000 | 540000 |
| Wiadomości Z | 2016 | 720000 | 0 |
| Wiadomości Z | 2017 | 750000 | 720000 |
| Wiadomości Z | 2018 | 780000 | 750000 |
| Wiadomości Z | 2019 | 880000 | 780000 |
| Wiadomości Z | 2020 | 910000 | 880000 |
W powyższym przykładzie mamy 2 telewizyjne kanały informacyjne, których przychody z bieżącego i poprzedniego roku są prezentowane w tym samym wierszu za pomocą funkcji LAG(). Jak widać, pierwszy rekord dla każdego z kanałów TV News nie zawiera przychodów z poprzedniego roku, więc pokazuje domyślną wartość 0. Ta funkcja może być bardzo przydatna w dostarczaniu danych do raportów BI, gdy chcesz porównać wartości w kolejnych okresach, np. Porównania rok po roku lub kwartał po kwartale lub codziennie.
Przykład 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];>
Wyjście:
| Organizacja | Rok | Przychód | PoprzedniRokPrzychody | Rok po rokuWzrost |
|---|---|---|---|---|
| Wiadomości ABCD | 2013 | 440000 | ZERO | ZERO |
| Wiadomości ABCD | 2014 | 480000 | 440000 | 40000 |
| Wiadomości ABCD | 2015 | 490000 | 480000 | 10000 |
| Wiadomości ABCD | 2016 | 500 000 | 490000 | 10000 |
| Wiadomości ABCD | 2017 | 520000 | 500 000 | 20000 |
| Wiadomości ABCD | 2018 | 525000 | 520000 | 5000 |
| Wiadomości ABCD | 2019 | 540000 | 525000 | 15000 |
| Wiadomości ABCD | 2020 | 550000 | 540000 | 10000 |
| Wiadomości Z | 2016 | 720000 | ZERO | ZERO |
| Wiadomości Z | 2017 | 750000 | 720000 | 30000 |
| Wiadomości Z | 2018 | 780000 | 750000 | 30000 |
| Wiadomości Z | 2019 | 880000 | 780000 | 100 000 |
| Wiadomości Z | 2020 | 910000 | 880000 | 30000 |
W powyższym przykładzie możemy podobnie obliczyć wzrost rok do roku dla telewizyjnego kanału informacyjnego. Warto także zauważyć w tym przykładzie, że nie dostarczyliśmy żadnego domyślnego parametru do LAG(), w związku z czym funkcja LAG() zwraca NULL w przypadku, gdy nie ma poprzednich wartości. Funkcję LAG() można zaimplementować na poziomie bazy danych, a rozwiązania BI Reporting, takie jak Power BI i Tableau, pozwalają uniknąć stosowania uciążliwych miar w warstwie raportowania.
Ważne uwagi dotyczące funkcji SQL LAG().
- Funkcja SQL LAG() to funkcja okna, która umożliwia użytkownikom dostęp do danych z wcześniejszych wierszy zbioru danych.
- Umożliwia użytkownikom porównywanie bieżących wartości wierszy z wartościami z poprzednich wierszy, szczególnie tych związanych z czasem lub konkretnymi kolumnami.
- Funkcja LAG() jest przydatna do analizowania zmian w czasie, takich jak dane giełdowe, dzienne trendy i zmiany w wielu kolumnach.