выбор верхних N строк для каждой группы в таблице

Я столкнулся с очень распространенной проблемой, касающейся "

Рассмотрим таблицу со столбцами 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 для волос типа «брюнетка».

Какое решение?

13
задан p.campbell 22 October 2010 в 15:52
поделиться