Jak działa FIRST_VALUE w języku SQL? Przykłady zastosowania

Jak działa FIRST_VALUE w języku SQL? Przykłady zastosowania

Gdy pracuję z danymi w SQL, często zachodzi potrzeba wyciągnięcia pierwszej wartości z danej grupy rekordów. W takich przypadkach funkcja FIRST_VALUE okazuje się niezwykle przydatna. Pozwala ona na szybkie pobranie pierwszej wartości w uporządkowanym zbiorze danych, co może być wykorzystywane w wielu scenariuszach analitycznych.

Jak działa FIRST_VALUE w języku SQL?

Funkcja FIRST_VALUE jest funkcją analityczną (okienkową), co oznacza, że działa w ramach określonego okna danych, zwracając pierwszą wartość w danej kolejności. Jej podstawowa składnia wygląda następująco:


FIRST_VALUE(kolumna) OVER (
    PARTITION BY podział
    ORDER BY kolejność
)

Oto kluczowe elementy tej składni:

  • kolumna – kolumna, z której pobierana jest wartość
  • PARTITION BY – opcjonalnie dzielimy dane na grupy
  • ORDER BY – definiujemy kolejność, według której ustalana jest „pierwsza” wartość

Przykłady zastosowania

Podstawowe użycie

Załóżmy, że mamy tabelę sprzedaze z następującymi danymi:

ID Produkt Rok Sprzedaż
1 Telefon 2023 500
2 Telefon 2022 450
3 Telefon 2021 400
4 Laptop 2023 1000
5 Laptop 2022 900
6 Laptop 2021 850

Teraz chcemy dla każdego produktu zobaczyć jego pierwszą odnotowaną sprzedaż w kolejności lat:


SELECT 
    Produkt, 
    Rok, 
    Sprzedaż, 
    FIRST_VALUE(Sprzedaż) OVER (PARTITION BY Produkt ORDER BY Rok) AS Pierwsza_Sprzedaż 
FROM sprzedaze;

Wynik zapytania:

Produkt Rok Sprzedaż Pierwsza_Sprzedaż
Telefon 2021 400 400
Telefon 2022 450 400
Telefon 2023 500 400
Laptop 2021 850 850
Laptop 2022 900 850
Laptop 2023 1000 850

Jak widać, dla każdego produktu funkcja FIRST_VALUE pobrała sprzedaż z pierwszego dostępnego roku.

Użycie z dodatkowymi filtrami

Możemy również skorzystać z tej funkcji, aby znaleźć pierwszą wartość tylko dla określonego zakresu danych, np. po 2021 roku:


SELECT 
    Produkt, 
    Rok, 
    Sprzedaż, 
    FIRST_VALUE(Sprzedaż) OVER (
        PARTITION BY Produkt 
        ORDER BY Rok 
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS Pierwsza_Sprzedaż
FROM sprzedaze
WHERE Rok >= 2022;

FIRST_VALUE kontra inne funkcje

W SQL istnieją inne funkcje, które mogą spełniać podobne role, więc warto je porównać:

  • MIN() – zwraca najmniejszą wartość w grupie, ale działa inaczej, bo ignoruje kolejność
  • ROW_NUMBER() – pozwala przypisać numerację zamiast pobierać wartość
  • LAG() – zwraca poprzednią wartość, a nie pierwszą

Podsumowanie

Funkcja FIRST_VALUE w języku SQL pozwala na pobranie pierwszej wartości w ramach uporządkowanego zbioru danych. Jest to niezwykle przydatne, gdy analizujemy trendy lub porównujemy dane historyczne. Dzięki jej elastyczności można ją łatwo dostosować do różnych sytuacji, co czyni ją jedną z najciekawszych funkcji okienkowych w SQL.

 

Inny ciekawy artykuł:

Jak działa LAG w języku SQL? Przykłady zastosowania

KajoDataSpace