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

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

Podczas pracy z danymi w SQL często pojawia się potrzeba podziału zestawu wyników na równe grupy. Do tego właśnie służy funkcja NTILE. Jest to jedna z funkcji okienkowych, która pozwala na podział zbioru wyników na określoną liczbę przedziałów. W tym artykule przyjrzymy się, jak działa NTILE w języku SQL i zobaczymy praktyczne przykłady jej zastosowania.

Co to jest NTILE?

NTILE to funkcja okienkowa w SQL, która pozwala podzielić zbiór wyników na N równo rozłożonych grup. Dzięki temu możemy przyporządkować każdemu rekordowi numer grupy, do której należy. Funkcja ta jest niezwykle użyteczna, gdy chcemy np. podzielić dane na kwantyle, decyle czy inne przedziały.

Składnia NTILE

Podstawowa składnia funkcji NTILE wygląda następująco:

NTILE(n) OVER (ORDER BY kolumna) AS alias

Gdzie:

  • n – liczba grup, na jakie ma zostać podzielony zbiór wyników.
  • OVER (ORDER BY kolumna) – określa kolejność sortowania rekordów przed podziałem na grupy.

Przykładowe zastosowanie funkcji NTILE

Załóżmy, że mamy tabelę Sprzedaz, która zawiera informacje o transakcjach sprzedaży. Chcemy podzielić nasze dane na cztery równe grupy według kolumny wartosc.

SELECT id_transakcji, wartosc, 
       NTILE(4) OVER (ORDER BY wartosc DESC) AS kwartyl
FROM Sprzedaz;

Rezultatem takiego zapytania będzie przypisanie każdej transakcji numeru grupy od 1 do 4 w zależności od wartości sprzedaży, gdzie grupa 1 zawiera największe wartości, a grupa 4 najmniejsze.

Jak NTILE działa w praktyce?

Załóżmy, że mamy poniższą tabelę Sprzedaz:

id_transakcji wartosc
1 1000
2 800
3 600
4 500
5 400
6 300
7 200
8 100

Jeśli teraz zastosujemy funkcję NTILE(4) na tej tabeli:

SELECT id_transakcji, wartosc, 
       NTILE(4) OVER (ORDER BY wartosc DESC) AS kwartyl
FROM Sprzedaz;

Otrzymamy wynik:

id_transakcji wartosc kwartyl
1 1000 1
2 800 1
3 600 2
4 500 2
5 400 3
6 300 3
7 200 4
8 100 4

Tabela została podzielona na 4 równe grupy kwartylowe.

NTILE a inne funkcje okienkowe

NTILE często porównuje się z innymi funkcjami okienkowymi, takimi jak:

  • ROW_NUMBER() – przypisuje unikalny numer do każdego wiersza.
  • RANK() – przypisuje rangę do wierszy, przy czym ex aequo mają tę samą rangę.
  • DENSE_RANK() – podobnie jak RANK, ale nie zostawia luk w numeracji rang.

Największą różnicą jest to, że NTILE dzieli dane na konkretne grupy, a pozostałe funkcje jedynie nadają porządkowe wartości rekordom.

Najczęstsze zastosowania funkcji NTILE

Funkcja NTILE znajduje zastosowanie w wielu scenariuszach analizy danych, m.in.:

  1. Podział na kwantyle – dzielenie danych na kwartyle, decyle czy percentyle.
  2. Ranking klientów – grupowanie klientów na podstawie poziomu wydatków.
  3. Analiza wydajności pracowników – klasyfikowanie wyników pracy na określone grupy.
  4. Stratyfikacja danych – dzielenie zbioru danych na segmenty o zbliżonych cechach.

Podsumowanie

Funkcja NTILE w języku SQL to niezwykle przydatne narzędzie do podziału danych na równe grupy. Dzięki niej możemy łatwo przeprowadzać analizy statystyczne, tworzyć rankingi czy segmentować klientów. Mam nadzieję, że po tym artykule lepiej rozumiesz jej działanie i znajdziesz dla niej zastosowanie w swoich projektach.

 

Inny ciekawy artykuł:

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

KajoDataSpace