Ich stehe vor einem sehr häufigen Problem bezüglich "Auswahl der obersten N Zeilen für jede Gruppe in einer Tabelle".Auswahl der oberen N Zeilen für jede Gruppe in einer Tabelle
Betrachten Sie eine Tabelle mit id, name, hair_colour, score
Spalten.
Ich möchte ein Resultset so, dass für jede Haarfarbe, mich Top 3 Scorernamen bekommen.
das ich genau habe zu lösen, was ich auf Rick Osborne's blogpost "sql-getting-top-n-rows-for-a-grouped-query"
brauchen Diese Lösung nicht wie erwartet funktioniert, wenn meine Noten gleich sind.
Im obigen Beispiel das Ergebnis wie folgt.
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
Betrachten Sie die Zeile 4 Deborah Brunette 9 2
. Wenn das gleiche Ergebnis (10) wie Sarah ist, dann wird ranknum 2,2,3 für "Brunette" Art der Haare sein.
Was ist die Lösung dafür?
Welche RDBMS verwenden Sie? –
Es gibt eine Lösung dafür unter http://stackoverflow.com/questions/3823939/ für den Fall, dass Sie nicht die neueren SQL Server verwenden. –