logo

Funkcja SQL LAG().

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.