Я столкнулся с очень распространенной проблемой, касающейся "
Рассмотрим таблицу со столбцами id, name, hair_colour, score
.
Мне нужен такой набор результатов, чтобы для каждого цвета волос я получал 3 лучших бомбардира.
Чтобы решить эту проблему Я получил именно то, что мне нужно, в блоге Рика Осборна «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), как у Сары, то ранкнум будет 2,2,3 для волос типа «брюнетка».
Какое решение?