Menu
Coddy logo textTech

ROW_NUMBER-Funktion

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

Fensterfunktionen führen Berechnungen über eine Gruppe von Tabellenzeilen durch, die mit der aktuellen Zeile verknüpft sind. Im Gegensatz zu regulären Aggregatfunktionen fassen Fensterfunktionen die Ergebnisse nicht in einer einzigen Zeile zusammen.

Sie sind besonders nützlich, wenn du Folgendes tun musst:

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

Zum Beispiel sind hier einige Beispiele aus der Praxis für Anwendungsfälle von Fensterfunktionen:

  • Umsatzanalyse
    • Kumulative Umsätze bis zu jedem Jahr (1995, 1997, 1999) berechnen
    • Die meistverkauften Produkte für jedes Quartal ermitteln
  • Sportstatistiken
    • Verfolge die Anzahl der olympischen Medaillen über verschiedene Jahre hinweg
    • Identifiziere führende Athleten in jedem Wettbewerbszeitraum (2000, 2004, 2008)

ROW_NUMBER() ist eine der einfachsten Fensterfunktionen. 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;

Die Verwendung der OVER-Klausel mit ROW_NUMBER() ist obligatorisch: 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:

  • liquids: id, density

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

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