Menu
Coddy logo textTech

RANK- & DENSE_RANK-Funktionen

Teil des Abschnitts Grundlagen der SQL-Journey von Coddy. Lektion 65 von 72.

ROW_NUMBER() ist ein Typ von Rangfunktion, und es gibt zwei weitere: RANK() und DENSE_RANK().

Die Funktion RANK() nummeriert Zeilen wie ROW_NUMBER(), vergibt aber identische Nummern für gleiche Zeilen und überspringt Nummern. DENSE_RANK() ähnelt RANK(), überspringt jedoch keine Nummern.

Zum Beispiel:

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

Dies ergibt:

idrow_numrow_rankrow_dense_rank
1111
6211
2332
3432
4553
5653

Erklärung:

  • ROW_NUMBER(): Immer eindeutig: 1, 2, 3, 4, 5, 6
  • RANK():
    • Stufe 5 (2 Zeilen): Beide erhalten den Rang 1
    • Stufe 6 (2 Zeilen): Beide erhalten den Rang 3 (überspringt 2)
    • Stufe 7 (2 Zeilen): Beide erhalten den Rang 5 (überspringt 4)
  • DENSE_RANK():
    • Stufe 5 (2 Zeilen): Beide erhalten den Rang 1
    • Stufe 6 (2 Zeilen): Beide erhalten den Rang 2 (kein Überspringen)
    • Stufe 7 (2 Zeilen): Beide erhalten den Rang 3 (kein Überspringen)
challenge icon

Aufgabe

Einfach

Verfügbare Tabellen und Spalten:

  • medals: region, medal_color, medal_count

Erstelle eine Abfrage, die die Region, die Gesamtzahl der Medaillen (Summe aller Medaillen unabhängig von ihrer Farbe) und zwei Arten von Ranglisten anzeigt:

  1. Eine regular_rank-Rangfolge (mit Lücken) über die Summe der Medaillen
  2. Eine dense_rank-Rangfolge (ohne Lücken) über die Summe der Medaillen

Sortiere das Ergebnis nach:

order by total_medals desc, region asc

Probier es selbst

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: SQL-Playground