Maison > base de données > tutoriel mysql > Comment récupérer efficacement les valeurs associées aux valeurs maximales des colonnes au sein des groupes dans Oracle SQL ?

Comment récupérer efficacement les valeurs associées aux valeurs maximales des colonnes au sein des groupes dans Oracle SQL ?

Linda Hamilton
Libérer: 2025-01-17 19:21:37
original
616 Les gens l'ont consulté

How to Efficiently Retrieve Values Associated with Maximum Column Values Within Groups in Oracle SQL?

Oracle SQL : Extraction de valeurs liées aux valeurs maximales de colonnes au sein des groupes

Une tâche courante de base de données consiste à sélectionner des valeurs associées à la valeur maximale d'une colonne, en particulier lorsqu'il s'agit de données groupées. Considérons un tableau avec les colonnes KEY, NUM et VAL :

KEY NUM VAL
A 1 AB
B 1 CD
B 2 EF
C 2 GH
C 3 HI
D 1 JK
D 3 LM

L'objectif est de trouver le maximum NUM pour chaque KEY et son VAL correspondant. Le résultat souhaité :

KEY VAL
A AB
B EF
C HI
D LM

Une méthode utilise une sous-requête :

<code class="language-sql">select KEY, VAL
from TABLE_NAME TN
where NUM = (
    select max(NUM)
    from TABLE_NAME TMP
    where TMP.KEY = TN.KEY
    );</code>
Copier après la connexion

Cependant, une approche plus efficace et plus lisible utilise la fonction ROW_NUMBER() :

<code class="language-sql">select key, val
from (select t.*, row_number() over (partition by key order by num desc) as seqnum
      from table_name t
     ) t
where seqnum = 1;</code>
Copier après la connexion

Cela attribue un classement au sein de chaque KEY groupe en fonction de valeurs NUM décroissantes. La clause WHERE filtre ensuite le premier rang (seqnum = 1), donnant le résultat souhaité :

KEY VAL
A AB
B EF
C HI
D LM

Bien que les deux méthodes aboutissent au même résultat, l'approche ROW_NUMBER() offre généralement de meilleures performances et une meilleure clarté, en particulier avec des ensembles de données plus volumineux. Le choix optimal dépend des besoins et des préférences spécifiques, mais ROW_NUMBER() offre une solution robuste et élégante à ce problème SQL courant.

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