
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.:
- Podział na kwantyle – dzielenie danych na kwartyle, decyle czy percentyle.
- Ranking klientów – grupowanie klientów na podstawie poziomu wydatków.
- Analiza wydajności pracowników – klasyfikowanie wyników pracy na określone grupy.
- 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
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.