
DENSE_RANK w SQL
DENSE_RANK to funkcja analityczna w SQL, która przypisuje rangi do wierszy w zestawie wyników, podobnie jak funkcja RANK. Różnica polega na tym, że DENSE_RANK nie tworzy luk w numeracji rang, gdy są wartości zduplikowane, co zapewnia ciągłość numeracji.
Składnia
Funkcja DENSE_RANK ma następującą składnię:
DENSE_RANK() OVER ([PARTITION BY partition_expression] ORDER BY sort_expression [ASC|DESC])
🧑💻 Gdzie:
-
partition_expression
– wyrażenie określające, na podstawie którego zostanie dokonany podział (partycjonowanie) wierszy. Jest to opcjonalne. -
sort_expression
– wyrażenie określające kolejność sortowania wierszy. - ASC|DESC – modyfikator określający kolejność sortowania: rosnąco (ASC) lub malejąco (DESC).
📌 Przykład:
Załóżmy, że mamy tabelę sprzedaz_pracownikow
, w której przechowywane są informacje o sprzedaży produktów przez pracowników.
W tabeli znajdują się następujące kolumny:
id_pracownika
– identyfikator pracownikaprodukt
– nazwa produktuwartosc_sprzedazy
– wartość sprzedaży
Chcemy przypisać rangi do pracowników na podstawie wartości sprzedaży produktów, przy czym rangi mają być przydzielane bez luk.
Zapytanie SQL będzie wyglądać następująco:
SELECT
id_pracownika,
produkt,
wartosc_sprzedazy,
DENSE_RANK() OVER (PARTITION BY produkt ORDER BY wartosc_sprzedazy DESC) as ranga
FROM
sprzedaz_pracownikow;
📌 Gdzie:
- id_pracownika to identyfikator pracownika.
- produkt to nazwa produktu.
- wartosc_sprzedazy to wartość sprzedaży.
- DENSE_RANK() OVER (PARTITION BY produkt ORDER BY wartosc_sprzedazy DESC) to funkcja rankingowa, która oblicza rangi w obrębie każdej grupy produktów (PARTITION BY produkt), sortując je według wartości sprzedaży w porządku malejącym (ORDER BY wartosc_sprzedazy DESC).
Program wyświetli tabelę z dodaną kolumną ranga
, w której będą przypisane numery rang do wierszy w obrębie każdej grupy produktów.
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.