Я столкнулся с очень распространенной проблемой "Выбор верхних N строк для каждой группы в таблице".
Рассмотрим таблицу с столбцами id, name, hair_colour, score
.
Мне нужен набор результатов, который для каждого цвета волос получал бы мне 3 наименования scorer.
Чтобы решить эту проблему, я получил именно то, что мне нужно на блог-блог Рика Осборна "sql-get-top-n-rows-for-a-grouped-query"
Это решение работает не так, как ожидалось, когда мои баллы равны.
В приведенном выше примере приведен следующий результат.
id name hair score ranknum
---------------------------------
12 Kit Blonde 10 1
9 Becca Blonde 9 2
8 Katie Blonde 8 3
3 Sarah Brunette 10 1
4 Deborah Brunette 9 2 - ------- - - > if
1 Kim Brunette 8 3
Рассмотрим строку 4 Deborah Brunette 9 2
. Если у этого также есть тот же счет (10), что и у Сары, тогда ranknum будет 2,2,3 для типа волос "Брюнетка".
Какое решение для этого?