У меня есть таблица с простой схемой: user_id
, score
и я хотел бы извлечь n записей с наивысшей оценкой, так что каждый user_id
будет представлен только один раз ,выберите максимум n записей из таблицы с не более чем одной записью для каждой группы
Этот вопрос похож на Get top n records for each group of grouped results, за исключением того, что вместо того, чтобы требовать n представителей на группу, мне нужно n представителей таблицы с максимальной записью для каждой группы.
Таким образом, если я ищу п = 3, выполнив запрос на:
user_id | score
1 | 10
2 | 9
1 | 11
2 | 8
3 | 8
4 | 12
должен давать:
user_id | score
4 | 12
1 | 11
2 | 9
о ничего себе, я был gymnasting через само присоединяется и подзапросы и все такое, так что рад, что это простое решение! – Mala
@Mala: Тогда вы все еще думаете «RBAR - Row By Agonizing Row». Вместо этого научитесь думать 'column by column'; в этом случае максимальный балл для топ-3 пользователей быстро приводит к этому решению. –
Если бы я добавил столбец даты в таблицу, как я могу продлить это, чтобы вернуть правильную дату? Тривиальное расширение выбора даты также возвращает первую дату вместо даты, связанной с максимальным счетом – Mala