Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie simuliere ich den Rang in MySQL, um die Top-n-Maximalwerte auszuwählen?

Patricia Arquette
Freigeben: 2024-11-10 15:40:03
Original
735 Leute haben es durchsucht

How to Simulate Rank in MySQL to Select Top n Maximum Values?

Rangsimulation mit MySQL zur Auswahl der Top-n-Maximalwerte

Die Auswahl der Top-n-Maximalwerte aus einer Tabelle kann insbesondere in MySQL eine Herausforderung sein wenn das gewünschte n größer ist als die Anzahl der unterschiedlichen Gruppen in der Tabelle.

Annäherung der Top-n-Maximalwerte Mithilfe einer Union-Abfrage

Für n=2 können wir die gewünschte Ausgabe mithilfe einer Union-Abfrage annähern:

SELECT max(column1) m
FROM table t
GROUP BY column2
UNION
SELECT max(column1) m
FROM table t
WHERE column1 NOT IN (SELECT max(column1) WHERE column2 = t.column2)
Nach dem Login kopieren

Diese Abfrage ermittelt zuerst den Maximalwert für jede Gruppe und dann findet den zweiten Maximalwert aller Werte, die nicht bereits der Maximalwert einer Gruppe sind.

Rang verwenden Simulationen

Für jedes n können wir Rang über Partition mithilfe der an anderer Stelle beschriebenen Techniken simulieren. Ein solcher Ansatz besteht darin, eine Unterabfrage zu verwenden, die den n-ten Maximalwert für jede Gruppe zurückgibt:

SELECT t.*
FROM
   (SELECT grouper,
          (SELECT val
           FROM table li
           WHERE li.grouper = dlo.grouper
           ORDER BY
                 li.grouper, li.val DESC
           LIMIT 2,1) AS mid
   FROM
      (
      SELECT DISTINCT grouper
      FROM table
      ) dlo
   ) lo, table t
WHERE t.grouper = lo.grouper
      AND t.val > lo.mid
Nach dem Login kopieren

In dieser Abfrage setzt LIMIT 2,1 den n-Wert auf 2. Ersetzen Sie Grouper durch die Gruppierungsspalte name und val mit dem Wertspaltennamen in Ihrem spezifischen Szenario.

Das obige ist der detaillierte Inhalt vonWie simuliere ich den Rang in MySQL, um die Top-n-Maximalwerte auszuwählen?. 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