Menu
Coddy logo textTech

ROW_NUMBER function

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

Fensterfunktionen (Window Functions) führen Berechnungen über eine Gruppe von Tabellenzeilen aus, die mit der aktuellen Zeile in Beziehung stehen. Im Gegensatz zu regulären Aggregatfunktionen fassen Fensterfunktionen die Ergebnisse nicht in einer einzigen Zeile zusammen.

Sie sind besonders nützlich, wenn Sie Folgendes tun müssen:

  • Laufende Summen berechnen
  • Elemente innerhalb von Gruppen rangieren
  • Aktuelle Zeilen mit vorherigen/nachfolgenden Zeilen vergleichen
  • Trends über Zeiträume hinweg analysieren

Hier sind zum Beispiel einige reale Anwendungsfälle für Fensterfunktionen:

  • Umsatzanalyse
    • Berechnen Sie die kumulierten Umsätze für jedes Jahr (1995, 1997, 1999)
    • Finden Sie die meistverkauften Produkte für jedes Quartal
  • Sportstatistiken
    • Verfolgen Sie Olympische Medaillenspiegel über verschiedene Jahre hinweg
    • Identifizieren Sie führende Athleten in jedem Wettkampfzeitraum (2000, 2004, 2008)

ROW_NUMBER() ist eine der einfachsten Window-Funktionen. Sie weist jeder Zeile in der Ergebnismenge eine eindeutige fortlaufende Nummer zu. So wird sie verwendet:

SELECT column1, column2,
       ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;

Es ist zwingend erforderlich, die OVER-Klausel mit ROW_NUMBER() zu verwenden: ROW_NUMBER() OVER ()

Zum Beispiel:

SELECT product_name, sale_date,
       ROW_NUMBER() OVER () as row_num
FROM sales;

Dies fügt eine row_num-Spalte hinzu, die von 1 bis zur Gesamtzahl der Zeilen zählt.

Hinweis: Die OVER-Klausel kann Anweisungen zur Sortierung und Partitionierung enthalten, um zu steuern, wie die Nummerierung funktioniert.

challenge icon

Aufgabe

Einfach

Verfügbare Tabellen und Spalten:

  • <strong>liquids</strong>: <strong>id</strong>, <strong>density</strong>

Hole alle Flüssigkeiten mit einer Dichte von mehr als 5.677.

Nummeriere das Ergebnis (verwende die Funktion ROW_NUMBER()) und nenne diese Spalte row_num

Probier es selbst

-- Nummeriere jede Zeile des gefilterten Ergebnisses mithilfe einer Fensterfunktion
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____
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