У меня есть таблица, в которой хранятся результаты теста:
user | score | time
-----+-------+------
aaa | 90% | 10:30
bbb | 50% | 9:15 ***
aaa | 85% | 10:15
aaa | 90% | 11:00 ***
...
Мне нужно, чтобы получить 10 лучших пользователей:
user | score | time
-----+-------+------
aaa | 90% | 11:00
bbb | 50% | 9:15
...
Я придумал следующее SELECT
:
SELECT * FROM (SELECT user, score, time
FROM tests_score
ORDER BY user, score DESC, time DESC) t1
GROUP BY user
ORDER BY score DESC, time
LIMIT 10
Работает нормально, но я не совсем уверен, правильно ли я использую ORDER BY
для выбора первой строки каждой группы отсортированных записей. Есть ли лучшая практика для достижения того же результата? (Я использую MySQL 5)