0
votes

Comment sélectionner le maximum de revenus pour chaque user_id avec le numéro de ligne en SQL?

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.

entrez la description de l'image ici

sql

1 commentaires

Marquez votre question avec la base de données que vous utilisez.


3 Réponses :


0
votes

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.


0 commentaires

0
votes
select *,
    case when revenue = max(revenue) over (partition by user_id) then 1 else 0 end as highlight
from T

0 commentaires

0
votes
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

2 commentaires

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"