ROW_NUMBER function
Teil des Abschnitts Grundlagen der SQL-Journey von Coddy — Lektion 57 von 72.
Fensterfunktionen führen Berechnungen über eine Menge von Tabellenzeilen durch, die mit der aktuellen Zeile zusammenhängen. Im Gegensatz zu regulären Aggregatfunktionen fassen Fensterfunktionen die Ergebnisse nicht in eine einzige Zeile zusammen.
Sie sind besonders nützlich, wenn Sie Folgendes benötigen:
- Laufende Summen berechnen
- Elemente innerhalb von Gruppen rangieren
- Aktuelle Zeilen mit vorherigen/nachfolgenden Zeilen vergleichen
- Trends über Zeitperioden analysieren
Zum Beispiel hier sind einige reale Beispiele für Anwendungsfälle von Fensterfunktionen:
- Umsatzanalyse
- Kumulierten Umsatz bis zu jedem Jahr berechnen (1995, 1997, 1999)
- Meistverkaufte Produkte für jedes Quartal finden
- Sportstatistiken
- Olympische Medaillenzahlen über verschiedene Jahre verfolgen
- Führende Athleten in jeder Wettbewerbsperiode identifizieren (2000, 2004, 2008)
ROW_NUMBER() ist eine der einfachsten Fensterfunktionen. Es weist jeder Zeile im Ergebnisdatensatz eine eindeutige fortlaufende Nummer zu. Hier wie man es verwendet:
SELECT column1, column2,
ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;Die OVER-Klausel muss mit ROW_NUMBER() verwendet werden: 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 Sortier- und Partitionierungsanweisungen enthalten, um zu steuern, wie die Nummerierung funktioniert.
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
<strong>liquids</strong>:<strong>id</strong>,<strong>density</strong>
Alle Flüssigkeiten mit einer Dichte von mehr als 5.677 abrufen.
Das Ergebnis nummerieren (die ROW_NUMBER()-Funktion verwenden) und diese Spalte row_num nennen.
Spickzettel
Fensterfunktionen führen Berechnungen über eine Menge von Tabellenzeilen durch, die in Bezug zur aktuellen Zeile stehen, ohne die Ergebnisse in eine einzige Zeile zusammenzufassen.
ROW_NUMBER() weist jeder Zeile eine eindeutige fortlaufende Nummer zu:
SELECT column1, column2,
ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;Die OVER-Klausel ist bei ROW_NUMBER() zwingend erforderlich:
SELECT product_name, sale_date,
ROW_NUMBER() OVER () as row_num
FROM sales;Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function8Statistics
Built-In Aggregate Part 1Built-In Aggregate Part 2Grouping Part 1Grouping Part 2Subqueries Part 1Subqueries Part 2Recap - Total Gain ShopRecap - Scooter ShopRecap - Coffee Shop11Window Functions part 1
ROW_NUMBER functionORDER BY criterionPARTITION BY criterionPARTITION & ORDERLEAD & LAG FunctionsRecap - LEAD & LAGRecap - PicturesRecap - Boxes3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns