0Pricing
SQL Academy · Lektion

Top-N-Datensätze finden

Die höchsten und niedrigsten Werte abrufen

Top-N-Datensätze finden ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist eine Top-N-Abfrage

Eine Top-N-Abfrage beantwortet Fragen wie „die 3 teuersten Produkte“, „die 10 neuesten Bestellungen“ oder „die 5 niedrigsten Punktzahlen“.

Sie besteht lediglich aus einer Sortierung mit Begrenzung, kommt aber so häufig vor, dass sie einen eigenen Namen verdient.

-- Top 3 most expensive products
SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 3;

Bottom-N-Datensätze

Für die kleinsten Werte drehen Sie die Sortierrichtung um. Sortieren Sie mit ASC und nehmen Sie die ersten N, um die günstigsten, ältesten oder niedrigsten Datensätze zu erhalten.

-- 5 cheapest products
SELECT name, price
FROM products
ORDER BY price ASC
LIMIT 5;

Einen Tie-Breaker hinzufügen

Wenn mehrere Zeilen denselben Grenzwert haben, wählt die Datenbank daraus beliebig aus. Fügen Sie einen eindeutigen sekundären Schlüssel hinzu, damit das Ergebnis stabil und reproduzierbar ist.

SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;

Top-N nach dem Filtern

Top-N-Abfragen arbeiten mit der gefilterten Ergebnismenge. Setzen Sie zuerst eine WHERE-Klausel ein, um die Kandidaten einzuschränken, und sortieren und begrenzen Sie anschließend.

Damit finden Sie die 3 teuersten Produkte in der Kategorie „Books“.

SELECT name, price
FROM products
WHERE category = 'Books'
ORDER BY price DESC
LIMIT 3;

Top-N nach einer Aggregation

Sie können auch berechnete Werte rangordnen. Gruppieren und aggregieren Sie zunächst, sortieren Sie anschließend das Aggregat und begrenzen Sie das Ergebnis.

Damit erhalten Sie die 5 Kunden, die insgesamt am meisten ausgegeben haben.

SELECT customer_id, SUM(total) AS spent
FROM orders
GROUP BY customer_id
ORDER BY spent DESC
LIMIT 5;

Der Ansatz mit Ranking-Funktionen

Fensterfunktionen wie ROW_NUMBER() weisen jeder Zeile einen Rang zu. Verschachteln Sie die Abfrage und behalten Sie die Zeilen, deren Rang klein ist. Damit können Sie „Top-N pro Gruppe“ umsetzen.

SELECT name, price
FROM (
  SELECT name, price,
         ROW_NUMBER() OVER (ORDER BY price DESC) AS rn
  FROM products
) ranked
WHERE rn <= 3;

RANK im Vergleich zu ROW_NUMBER bei Gleichständen

ROW_NUMBER() vergibt immer unterschiedliche Nummern und liefert daher auch bei Gleichständen genau N Zeilen. RANK() vergibt Zeilen mit gleichem Wert dieselbe Nummer. Daher kann „Top 3“ bei einem Gleichstand auf dem dritten Platz mehr als 3 Zeilen liefern.

SELECT name, price,
       RANK() OVER (ORDER BY price DESC) AS rnk
FROM products;

Top-N pro Gruppe

Um das beste Produkt in jeder Kategorie zu erhalten, partitionieren Sie die Rangfolge nach Kategorie. PARTITION BY beginnt die Nummerierung für jede Gruppe von Neuem.

SELECT category, name, price
FROM (
  SELECT category, name, price,
         ROW_NUMBER() OVER (
           PARTITION BY category
           ORDER BY price DESC
         ) AS rn
  FROM products
) t
WHERE rn = 1;

DISTINCT ON für eine Zeile pro Gruppe

Das PostgreSQL-Konstrukt DISTINCT ON bietet eine kompakte Möglichkeit, die oberste Zeile pro Gruppe auszuwählen. Geben Sie die Gruppierungsspalte an und sortieren Sie anschließend so, dass die gewünschte Zeile innerhalb jeder Gruppe an erster Stelle steht.

SELECT DISTINCT ON (category)
       category, name, price
FROM products
ORDER BY category, price DESC;

Gleichstände mit WITH TIES einschließen

Wenn Sie die besten 3 Zeilen möchten, aber zusätzlich alle Zeilen einschließen wollen, die mit der dritten gleichauf liegen, verwenden Sie das standardkonforme FETCH ... WITH TIES. Es liefert 3 Zeilen sowie zusätzliche Zeilen, die mit der letzten gleichauf liegen.

SELECT name, price
FROM products
ORDER BY price DESC
FETCH FIRST 3 ROWS WITH TIES;

Einzelner Spitzenwert

Für genau eine Zeile mit dem höchsten oder niedrigsten Wert ist ORDER BY ... LIMIT 1 das einfachste Muster – übersichtlicher und oft schneller als eine Unterabfrage mit MAX().

-- The single most recent order
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 1;

Schnellüberprüfung

Sie möchten die 3 höchsten Preise anzeigen, aber bei einem Gleichstand auf dem dritten Platz alle entsprechenden Zeilen einschließen.

Zusammenfassung

Sie können jetzt Top-N-Datensätze mit allen wichtigen Methoden finden:

  • ORDER BY ... LIMIT n für einfache Listen der höchsten oder niedrigsten Werte
  • Fügen Sie einen eindeutigen Tie-Breaker hinzu, damit die Ergebnisse stabil bleiben
  • Verwenden Sie ROW_NUMBER() oder DISTINCT ON für Top-N pro Gruppe
  • Verwenden Sie FETCH ... WITH TIES, um Zeilen mit Gleichständen beizubehalten

Damit sind Sortierung, Begrenzung und Top-N abgeschlossen. Sie können nun jedem Ergebnissatz eine klare Ordnung geben.

SELECT name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;

Häufig gestellte Fragen

Ist die Lektion „Top-N-Datensätze finden“ kostenlos?

Ja — der vollständige Text von „Top-N-Datensätze finden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Top-N-Datensätze finden“?

Die höchsten und niedrigsten Werte abrufen Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Top-N-Datensätze finden“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Mit ORDER BY sortieren
  2. Nach mehreren Spalten sortieren
  3. LIMIT und OFFSET
  4. Top-N-Datensätze finden
← Zurück zu SQL Academy