Detailliertes Beispiel zum Abrufen des Maximalwerts jeder Gruppe nach der Gruppierung in MySQL 1. Die Testdatenbanktabelle sieht wie folgt aus: Tabellentest erstellen ( `id` int ungleich null auto_increment, `name` varchar(20) nicht null Standard '', `score` int ungleich null, Standard 0, Primärschlüssel (`id`) )engine=InnoDB CHARSET=UTF8; 2. Geben Sie folgende Daten ein: mysql> wähle * aus Test; +----+----------+-------+ | ID | Name | Punktzahl | +----+----------+-------+ | 1 | Jason | 1 | | 2 | Jason | 2 | | 3 | Jason | 3 | | 4 | linjie | 1 | | 5 | linjie | 2 | | 6 | linjie | 3 | | 7 | xiaodeng | 1 | | 8 | xiaodeng | 2 | | 9 | xiaodeng | 3 | | 10 | gerade | 2 | | 11 | gerade | 3 | | 12 | gerade | 1 | |13 | haha |1 | |14 | haha |2 | | 15 | dengzi | 3 | | 16 | dengzi | 4 | | 17 | dengzi | 5 | | 18 | shazi | 3 | | 19 | schazi | 4 | | 20 | schazi | 2 | +----+----------+-------+ 3. Folgendes ist der entscheidende Punkt. Der Zweck besteht darin, nach Namen zu gruppieren und dann nach der Gruppierung die höchste Punktzahl in jeder Gruppe zu erhalten. Das SQL lautet wie folgt Wählen Sie a.* aus Test, einem inneren Join (Wählen Sie Name, Max(Score)-Score aus Testgruppe nach Name)b auf a. name=b.name und a.score=b.score, sortiert nach a.name; Natürlich kann die letzte Bestellung von a.name oben gelöscht werden 4. Die Testergebnisse sind wie folgt: +----+----------+-------+ | ID | Name | Punktzahl | +----+----------+-------+ | 3 | Jason | 3 | | 6 | linjie | 3 | | 9 | xiaodeng | 3 | | 11 | gerade | 3 | |14 | haha |2 | | 17 | dengzi | 5 | | 19 | schazi | 4 | +----+----------+-------+ 5. Viele Methoden im Internet sind falsch, wie zum Beispiel die folgende, die nicht funktionieren, wenn sie persönlich getestet werden Wählen Sie * aus (Wählen Sie * aus dem Test, sortieren Sie nach Punktzahl absteigend) t Gruppieren nach Namen, sortieren Sie nach Punktzahl absteigend, Limit 4; Wählen Sie Score, Max(Score) aus der Testgruppe nach Namen aus. Wählen Sie * aus dem Test, wobei die Punktzahl in (Wählen Sie max(Punktzahl) aus der Testgruppe nach Namen) liegt; Wählen Sie * aus dem Test, wo die Punktzahl in (Wählen Sie Teilstring_index (Group_concat (Punktzahl sortiert nach Punktzahl-Abstiegstrennzeichen ','),',',1) aus der Testgruppe nach Name); Wählen Sie * aus (Wählen Sie Name, Punktzahl, Zeilennummer () über (Gruppieren nach Name, Sortieren nach Punktzahl absteigend) als Zeilennummer aus Test) Rang, wobei Rang.Zeilennummer <= 1, Sortieren nach Rang.Punktzahl absteigend; wähle * aus (wähle StoresNo, [CustomerCaseNo], [PaymentsTime], ROW_NUMBER() über (Partition nach CustomerCaseNo, sortiert nach [PaymentsTime] desc) als Zeilennummer aus BAL_paymentsSwiftInfo, wobei StoresNo='zq00000034') Rangfolge, wobei ranked.rowNum <= 1, sortiert nach ranked.CustomerCaseNo, ranked.PaymentsTime, desc Wählen Sie * aus (Wählen Sie * aus der Testreihenfolge nach Punktzahl absteigend) als Gruppe nach a.name; Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site! Das könnte Sie auch interessieren:
|
<<: Methoden und Schritte für die verteilte Bereitstellung von Etcd basierend auf Docker
>>: Beispielcode zum Konfigurieren von Nginx zur Unterstützung von https
Nginx verbirgt die Versionsnummer In einer Produk...
Aktuelle Anforderungen: Globales Laden, alle Schn...
23. April 2020: Heute können Sie mit Ubuntu 20.04...
In diesem Artikel erfahren Sie, wie Sie mit JavaS...
Es gibt zu viele Artikel über Webstandards zur We...
Dieser Artikel ist Teil einer Sonderserie zu den ...
Inhaltsverzeichnis Gängige Array-Methoden Hinzufü...
<br />Originaltext: http://www.mikkolee.com/...
Vorwort Ich habe heute eine kleine Demo geschrieb...
Bevor der Pfeil abgeschossen wurde, flüsterte der...
Inhaltsverzeichnis Vue2.x-Nutzung Globale Registr...
F1: Welche Indizes hat die Datenbank? Was sind di...
Inhaltsverzeichnis Vorwort Zur APP-Methode spring...
Inhaltsverzeichnis WebAPI DOM DOM-Baum Methode zu...
1. MySQL Workbench herunterladen Workbench ist ei...