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