Maison >base de données >tutoriel mysql >Comment trouver la valeur maximale du signal pour chaque identifiant unique dans un tableau ?

Comment trouver la valeur maximale du signal pour chaque identifiant unique dans un tableau ?

DDD
DDDoriginal
2025-01-06 12:38:41344parcourir

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

Détermination des valeurs de signal maximales pour les identifiants uniques

Le tableau fourni contient plusieurs enregistrements de signaux pour les mêmes identifiants, ce qui nécessite de récupérer le plus élevé valeur du signal pour chaque ID. L'utilisation de la fonction MAX() seule peut être problématique car elle regroupe tous les enregistrements, affectant les colonnes Station et OwnerID.

Solution de requête avec auto-jointure et exclusion

Pour Isolez les valeurs de signal les plus élevées pour chaque ID, envisagez une approche d'auto-adhésion. Cette technique consiste à joindre une table avec elle-même pour permettre les comparaisons et le filtrage.

La requête suivante exploite cette approche :

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 fonctionne comme suit :

  • L'alias cur représente la ligne actuelle en cours d'évaluation.
  • L'instruction SELECT imbriquée sert de sous-requête pour vérifier si une valeur de signal plus élevée existe pour le même ID.
  • Si aucune valeur supérieure n'est trouvée, la condition NOT EXISTS renvoie vrai, y compris la ligne actuelle dans l'ensemble de résultats.

La sortie de cette requête inclura un une seule ligne pour chaque ID avec la valeur de signal associée la plus élevée. Cette approche résout efficacement le problème de l'agrégation de différentes stations et identifiants de propriétaire pour le même identifiant.

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