Heim > Datenbank > MySQL-Tutorial > Wie wähle ich die beiden obersten Zeilen für jede Gruppe in SQL aus?

Wie wähle ich die beiden obersten Zeilen für jede Gruppe in SQL aus?

Mary-Kate Olsen
Freigeben: 2024-12-31 15:13:13
Original
570 Leute haben es durchsucht

How to Select the Top Two Rows for Each Group in SQL?

Auswählen der obersten beiden Zeilen in jeder SQL-Gruppe

In SQL besteht eine häufige Aufgabe darin, nur die obersten Zeilen für jede Gruppe abzurufen. Die Standard-Aggregationsfunktionen für die Gruppierung (wie MAX() und MIN()) ermöglichen jedoch nur die Auswahl des höchsten oder niedrigsten Werts.

Abfrage zur Auswahl der beiden besten Ergebnisse pro Name:

Um dieser Herausforderung zu begegnen, ist eine komplexere Abfrage erforderlich. Hier ist ein Beispiel für die Auswahl der beiden höchsten Bewertungen für jeden Namen in der bereitgestellten Tabelle:

SELECT *
FROM   test s
WHERE 
        (
            SELECT  COUNT(*) 
            FROM    test  f
            WHERE f.name = s.name AND 
                  f.score >= s.score
        ) <= 2;
Nach dem Login kopieren

Erklärung:

  • Die äußere Abfrage (SELECT * ...) ruft alle Zeilen aus der Testtabelle ab.
  • Die Unterabfrage (SELECT COUNT(*) ...) bestimmt, wie viele Für jeden Namen in der Testtabelle sind Datensätze vorhanden, deren Punktzahl gleich oder größer als die Punktzahl der aktuellen Zeile ist.
  • Die WHERE-Klausel filtert dann die Zeilen in der äußeren Abfrage, indem sie sicherstellt, dass die Anzahl aus der Unterabfrage kleiner ist als oder gleich 2.

Beispielausgabe:

Die obige Abfrage gibt Folgendes zurück Ausgabe:

NAME    SCORE
-----------------
willy       2
willy       3
zoe         5
zoe         6
Nach dem Login kopieren

Diese Ausgabe enthält wie gewünscht die beiden besten Bewertungen für jeden Namen in der Tabelle.

Das obige ist der detaillierte Inhalt vonWie wähle ich die beiden obersten Zeilen für jede Gruppe in SQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage