2010-04-27 5 views
0

Supposons que vous avez le schéma suivant (id, user_id, score). Comment puis-je prendre pour chaque utilisateur la ligne avec le score maximum et ensuite commander toutes les lignes pour le score. En d'autres termes, je veux un classement où chaque utilisateur a son meilleur résultat.Agréger conserver la ligne avec la valeur maximale

Répondre

1
select user_id, max(score) 
from user_scores 
group by user_id 
order by max(score) 
0

devrait être quelque chose comme:

SELECT UNIQUE user_id, score FROM TABLE 
    ORDER BY SCORE DESC 
0
select @rownum := @rownum + 1 AS rank, user_id, MAX(score) as Score 
     from table_name t, 
     (SELECT @rownum := 0) r 
     GROUP BY user_id 
     ORDER BY Score 
Questions connexes