Maison > base de données > tutoriel mysql > Comment sélectionner la valeur maximale dans chaque groupe dans SQL ?

Comment sélectionner la valeur maximale dans chaque groupe dans SQL ?

Patricia Arquette
Libérer: 2024-12-29 18:24:11
original
633 Les gens l'ont consulté

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

SQL Group By avec sélection de valeur maximale

En SQL, la clause GROUP BY nous permet de regrouper les lignes en fonction des colonnes spécifiées. Lorsqu'il est utilisé avec la fonction MAX, il peut être utilisé pour sélectionner la plus grande valeur de chaque groupe.

Énoncé du problème

Supposons que vous ayez un tableau contenant les données suivantes :

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

Vous souhaitez récupérer uniquement les informations les plus récentes pour chaque groupe défini par AlarmID et AlarmUnit. Le résultat attendu devrait être :

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

Solution

Pour résoudre ce problème, nous pouvons utiliser la requête suivante dans Oracle, SQL Server 2005 et PostgreSQL 8.4 :

SELECT  *
FROM    (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY alarmId, alarmUnit ORDER BY id DESC) AS rn
        FROM    TableName
        ) q
WHERE   rn = 1
Copier après la connexion

Pour MySQL, la requête est :

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
Copier après la connexion

Pour PostgreSQL 8.3 et ci-dessous, nous pouvons utiliser :

SELECT  DISTINCT ON (alarmId, alarmUnit) *
FROM    TableName
ORDER BY
        alarmId, alarmUnit, id DESC
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal