Menu
Coddy logo textTech

Funkcje LEAD i LAG

Część sekcji Podstawy ścieżki SQL w Coddy. Lekcja 61 z 72.

Funkcje LEAD i LAG pozwalają nam uzyskać dostęp do wartości bieżącego wiersza sprzed n kroków lub za n kroków.

Na przykład, jeśli chcemy obliczyć stosunek przychodu firmy w bieżącym wierszu do przychodu sprzed miesiąca, możemy pobrać wartość z poprzedniego miesiąca:

idrevenuemonth
15325
24926
33937
47238
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY id

Spowoduje to utworzenie następującej tabeli:

idrevenueprev_month_revenue
1532 
2492532
3393492
4723393

W ten sposób możemy obliczyć stosunek prev_month_revenue/revenue.

Gdybyśmy zamiast tego użyli funkcji LEAD, pobrałaby przychód z następnego miesiąca dla każdego wiersza:

SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id
idrevenuenext_month_revenue
1532492
2492393
3393723
4723 
challenge icon

Wyzwanie

Łatwy

Dostępne tabele i kolumny:

  • air_conditioners: id, efficiency, strength, month

Porównaj wydajność każdego klimatyzatora z poprzednim.

Napisz zapytanie, które wyświetla wydajność każdego klimatyzatora wraz z wydajnością poprzednio zainstalowanego klimatyzatora (na podstawie id). Oblicz także różnicę wydajności między bieżącym a poprzednim klimatyzatorem. Posortuj wynik rosnąco według id i efficiency.

Oczekiwane kolumny wyniku:

  • id
  • efficiency
  • previous_efficiency (z użyciem LAG)
  • efficiency_difference (bieżąca wydajność - poprzednia wydajność)

Na koniec opakuj zapytanie i odfiltruj pierwszy wiersz, w którym previous_efficiency (a tym samym efficiency_difference) jest puste, czyli ma wartość NULL:

SELECT * FROM (
    -- Your query here
)
WHERE previous_efficiency IS NOT NULL

Spróbuj swoich sił

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online SQL