Maison >base de données >tutoriel mysql >Comment trouver la valeur maximale du signal pour chaque ID dans une table SQL ?

Comment trouver la valeur maximale du signal pour chaque ID dans une table SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-06 12:39:41486parcourir

How to Find the Maximum Signal Value for Each ID in a SQL Table?

Requête de signal maximum pour chaque ID

Question :

Étant donné une table avec plusieurs signaux valeurs associées à chaque ID, comment écrire une requête pour récupérer la valeur maximale du signal pour chaque ID unique ? Prenons l'exemple de tableau suivant :

ID     Signal    Station    OwnerID
111     -120      Home       1
111     -130      Car        1
111     -135      Work       2
222     -98       Home       2
222     -95       Work       1
222     -103      Work       2

Réponse :

Pour récupérer la valeur maximale du signal pour chaque ID sans affecter les autres colonnes telles que Station et OwnerID, un auto- join peut être utilisé :

select cur.id, cur.signal, cur.station, cur.ownerid
from yourtable cur
where not exists (
    select * 
    from yourtable high 
    where high.id = cur.id 
    and high.signal > cur.signal
)

Cette requête joint la table à elle-même pour créer un produit cartésien. Pour chaque paire de lignes, il vérifie si la valeur du signal de la deuxième ligne (high) est supérieure à celle de la première ligne (cur). Si une valeur de signal plus élevée est trouvée pour le même ID, la ligne actuelle est exclue.

Le résultat est un tableau contenant uniquement les lignes avec la valeur de signal maximale pour chaque ID. Pour l'exemple de tableau, le résultat serait :

ID    Signal    Station    OwnerID
111   -120      Home        1
222   -95       Work        1

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!

Déclaration:
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