Dans mon ensemble de données, il y a des user_id que chacun d'eux a plusieurs numéros de ligne (de 1 à n) que chaque ligne a un revenu spécifique. Je veux sélectionner le maximum du revenu pour chaque user_id avec le numéro de ligne appartient à ce revenu. Je veux avoir une requête avec le résultat des lignes en surbrillance.

3 Réponses :
Une méthode est une sous-requête corrélée:
select t.* from t where t.revenue = (select max(t2.revenue) from t t2 where t2.user_id = t.user_id);
S'il y a des égalités pour le maximum, cela renvoie toutes les lignes de valeur la plus élevée.
select *,
case when revenue = max(revenue) over (partition by user_id) then 1 else 0 end as highlight
from T
select tt.* from #tbl tt join (select user_Id, max(revenue) as revenue from #tbl group by user_Id) tm on tt.user_Id = tm.user_Id and tt.revenue = tm.revenue
Merci, c'est quoi ce tm? J'ai essayé votre code mais j'ai reçu une erreur
tm c'est juste un alias pour la requête interne, dépend de votre DB, peut-être devriez-vous le changer sur "as tm"
Marquez votre question avec la base de données que vous utilisez.