Je suis confronté à un problème très courant concernant la "sélection des N premières lignes pour chaque groupe dans un tableau".Sélection des N premières lignes pour chaque groupe dans un tableau
Considérons un tableau avec des colonnes id, name, hair_colour, score
.
Je veux un résultat tel que, pour chaque couleur de cheveux, obtenez-moi les 3 meilleurs noms de marqueur.
Pour résoudre cela, je suis exactement ce que je dois sur Rick Osborne's blogpost "sql-getting-top-n-rows-for-a-grouped-query"
Cette solution ne fonctionne pas comme prévu lorsque mes scores sont égaux.
Dans l'exemple ci-dessus, le résultat est le suivant.
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
Considérons la ligne 4 Deborah Brunette 9 2
. Si cela a aussi le même score (10) que Sarah, alors le ranknum sera de 2,2,3 pour les cheveux de type "Brunette".
Quelle est la solution à ce problème?
Quel RDBMS utilisez-vous? –
Il existe une solution pour cela sur http://stackoverflow.com/questions/3823939/ dans le cas où vous n'utilisez pas les nouveaux serveurs SQL. –