selecionando N linhas principais para cada grupo em uma tabela

Estou enfrentando um problema muito comum em relação à "Seleção das N linhas principais para cada grupo em uma tabela".

Considere uma tabela comid, name, hair_colour, score colunas.

Quero um conjunto de resultados para que, para cada cor de cabelo, consiga três nomes de artilheiros.

Para resolver isso, eu tenho exatamente o que eu precisoArtigo de Rick Osborne no blog "sql-obtendo-top-n-linhas-para-uma-consulta-agrupada"

Essa solução não funciona como esperado quando minhas pontuações são iguais.

No exemplo acima, o resultado é o seguinte.

 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

Considere a linha4 Deborah Brunette 9 2. Se isso também tiver a mesma pontuação (10) que Sarah, o ranknum será 2,2,3 para o cabelo "Morena".

Qual a solução para isso?

questionAnswers(3)

yourAnswerToTheQuestion