Menu
Coddy logo textTech

Funkcje RANK i DENSE_RANK

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

ROW_NUMBER() to jeden z typów funkcji rankingowych, a istnieją jeszcze dwa: RANK() i DENSE_RANK().

Funkcja RANK() numeruje wiersze tak jak ROW_NUMBER(), ale przypisuje identyczne numery takim samym wierszom i pomija numery. DENSE_RANK() działa podobnie do RANK(), ale nie pomija numerów.

Na przykład:

idlevel
15
26
36
47
57
65
SELECT id, 
	ROW_NUMBER() OVER (ORDER BY level) as row_num,
	RANK() OVER (ORDER BY level) as row_rank,
	DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1

Zwróci to:

idrow_numrow_rankrow_dense_rank
1111
6211
2332
3432
4553
5653

Wyjaśnienie:

  • ROW_NUMBER(): zawsze unikalne: 1, 2, 3, 4, 5, 6
  • RANK():
    • poziom 5 (2 wiersze): oba otrzymują rangę 1
    • poziom 6 (2 wiersze): oba otrzymują rangę 3 (pomija 2)
    • poziom 7 (2 wiersze): oba otrzymują rangę 5 (pomija 4)
  • DENSE_RANK():
    • poziom 5 (2 wiersze): oba otrzymują rangę 1
    • poziom 6 (2 wiersze): oba otrzymują rangę 2 (bez pomijania)
    • poziom 7 (2 wiersze): oba otrzymują rangę 3 (bez pomijania)
challenge icon

Wyzwanie

Łatwy

Dostępne tabele i kolumny:

  • medals: region, medal_color, medal_count

Utwórz zapytanie, które wyświetla region, łączną liczbę medali (sumę wszystkich medali, niezależnie od koloru) oraz dwa rodzaje rankingów:

  1. regular_rank (z lukami) według sumy medali
  2. dense_rank (bez luk) według sumy medali

Sortuj wyniki według:

order by total_medals desc, region asc

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