Maison >base de données >tutoriel mysql >Comment trouver la valeur maximale pour chaque ID utilisateur distinct dans une table Oracle ?

Comment trouver la valeur maximale pour chaque ID utilisateur distinct dans une table Oracle ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-25 18:23:11724parcourir

How to Find the Maximum Value for Each Distinct User ID in an Oracle Table?

Récupération de la valeur maximale pour chaque ID utilisateur unique dans Oracle

Ce guide montre comment extraire efficacement la valeur maximale associée à chaque ID utilisateur distinct d'une table Oracle. Supposons un tableau structuré comme suit:

<code>UserId, Value, Date</code>

L'objectif est de récupérer le UserId et son Value correspondant où le Date est le plus récent pour chaque utilisateur.

Voici une requête Oracle SQL efficace pour y parvenir:

<code class="language-sql">SELECT t1.*
FROM mytable t1
LEFT OUTER JOIN mytable t2
  ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date")
WHERE t2.UserId IS NULL;</code>

Cette requête utilise un LEFT OUTER JOIN pour comparer chaque ligne dans mytable (aliasé comme t1) avec toutes les autres lignes (aliasées comme t2) ayant le même UserId. La condition de jointure t1."Date" < t2."Date" garantit que seules les lignes avec une date ultérieure sont considérées.

La clause WHERE t2.UserId IS NULL filtre les résultats. Lignes où t2.UserId est NULL indique qu'aucune autre ligne avec le même UserId et un plus tard Date n'existe. Par conséquent, ces lignes représentent la date maximale pour chaque utilisateur.

Exemple:

si mytable contient les données suivantes:

UserId Value Date
1 5 2023-03-08
1 10 2023-03-15
2 3 2023-04-01
2 7 2023-04-10

La requête reviendra:

UserId Value Date
1 10 2023-03-15
2 7 2023-04-10

Cette approche est efficace et évite le besoin de sous-questionnaires ou de fonctions de fenêtre, ce qui en fait une solution robuste pour les bases de données Oracle.

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