Heim >Datenbank >MySQL-Tutorial >Wie rufe ich mit SQL die Top-10-Datensätze aus jeder Kategorie ab?

Wie rufe ich mit SQL die Top-10-Datensätze aus jeder Kategorie ab?

Susan Sarandon
Susan SarandonOriginal
2025-01-21 05:57:12998Durchsuche

How to Retrieve the Top 10 Records from Each Category Using SQL?

Extrahieren der Top-10-Datensätze pro Kategorie mit SQL

Ein häufiger Datenbankvorgang besteht darin, die Top-Einträge aus jeder Kategorie in einer einzigen SQL-Abfrage abzurufen. Dies wird typischerweise mithilfe von Ranking-Funktionen in Kombination mit Partitionierung erreicht. Sehen wir uns an, wie das mit SQL geht, und konzentrieren uns dabei auf eine Datenbank mit Kategorien wie „Geschäft“, „Lokal“ und „Funktion“.

SQL Server 2005-Lösung für die Top 10 Datensätze pro Abschnitt

In SQL Server 2005 liefert die folgende Abfrage das gewünschte Ergebnis:

<code class="language-sql">SELECT rs.Field1, rs.Field2
FROM (
    SELECT Field1, Field2, RANK() OVER (PARTITION BY Section ORDER BY RankCriteria DESC) AS Rank
    FROM table
) rs
WHERE Rank <= 10</code>

Diese Abfrage nutzt die Funktion RANK(), um jeden Datensatz innerhalb seines jeweiligen Abschnitts basierend auf der Spalte RankCriteria einzustufen. Die PARTITION BY-Klausel trennt Datensätze durch Section und gewährleistet so eine unabhängige Rangfolge für jede Kategorie.

Umgang mit Gleichständen in Rankings

Es ist wichtig zu verstehen, dass RANK() mit Bindungen nicht effektiv umgeht. Wenn mehrere Datensätze denselben RankCriteria-Wert haben, erhalten sie denselben Rang. Dies kann dazu führen, dass für einen Abschnitt mehr als 10 Datensätze zurückgegeben werden, wenn Verknüpfungen bestehen.

Um dies zu mildern, sollten Sie stattdessen ROW_NUMBER() verwenden. ROW_NUMBER() weist innerhalb jeder Partition eindeutige fortlaufende Nummern zu und ermöglicht so eine präzisere Top-10-Auswahl, obwohl dieser Ansatz in einigen Szenarien zu mehr Komplexität führen kann.

Das obige ist der detaillierte Inhalt vonWie rufe ich mit SQL die Top-10-Datensätze aus jeder Kategorie ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn