Heim > Datenbank > MySQL-Tutorial > Wie wähle ich den Maximalwert innerhalb jeder Gruppe in SQL aus?

Wie wähle ich den Maximalwert innerhalb jeder Gruppe in SQL aus?

Patricia Arquette
Freigeben: 2024-12-29 18:24:11
Original
633 Leute haben es durchsucht

How to Select the Maximum Value within Each Group in SQL?

SQL-Gruppierung nach mit Maximalwertauswahl

In SQL ermöglicht uns die GROUP BY-Klausel, Zeilen basierend auf angegebenen Spalten zu gruppieren. Bei Verwendung mit der MAX-Funktion kann damit der größte Wert aus jeder Gruppe ausgewählt werden.

Problemstellung

Angenommen, Sie haben eine Tabelle mit den folgenden Daten:

ID Name AlarmID AlarmUnit AlarmLevel
1 Test Voltage PSU Warning
2 Test Voltage PSU Ceased
3 Test Voltage PSU Warning
4 Test Temperature RCC Warning
5 Test Temperature RCC Ceased

Sie möchten nur die neuesten Informationen für jede durch AlarmID und AlarmUnit definierte Gruppe abrufen. Die erwartete Ausgabe sollte sein:

ID Name AlarmID AlarmUnit AlarmLevel
3 Test Voltage PSU Warning
5 Test Temperature RCC Ceased

Lösung

Um dieses Problem zu lösen, können wir die folgende Abfrage in Oracle, SQL Server 2005 und PostgreSQL 8.4 verwenden:

SELECT  *
FROM    (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY alarmId, alarmUnit ORDER BY id DESC) AS rn
        FROM    TableName
        ) q
WHERE   rn = 1
Nach dem Login kopieren

Für MySQL lautet die Abfrage:

SELECT  mi.*
FROM    (
        SELECT  alarmId, alarmUnit, MAX(id) AS mid
        FROM    TableName
        GROUP BY
                alarmId, alarmUnit
        ) mo
JOIN    TableName mi
ON      mi.id = mo.mid
Nach dem Login kopieren

Für PostgreSQL 8.3 und Unten können wir Folgendes verwenden:

SELECT  DISTINCT ON (alarmId, alarmUnit) *
FROM    TableName
ORDER BY
        alarmId, alarmUnit, id DESC
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie wähle ich den Maximalwert innerhalb jeder 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