Sto affrontando un problema molto comune relativo a "Selezione delle prime N righe per ogni gruppo in una tabella".selezionando le prime N righe per ogni gruppo in una tabella
Prendere in considerazione una tabella con colonne id, name, hair_colour, score
.
Desidero un set di risultati tale che, per ogni colore di capelli, ottenere i primi 3 nomi degli autori.
per risolvere questo ho ottenuto esattamente che cosa ho bisogno in Rick Osborne's blogpost "sql-getting-top-n-rows-for-a-grouped-query"
Questa soluzione non funziona come previsto quando i miei punteggi sono uguali.
Nell'esempio precedente il risultato è il seguente.
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
Prendere in considerazione la riga 4 Deborah Brunette 9 2
. Se anche questo ha lo stesso punteggio (10) uguale a quello di Sarah, allora il ranknum sarà 2,2,3 per il tipo di capelli "Bruna".
Qual è la soluzione a questo?
Che tipo di RDBMS stai utilizzando? –
Una soluzione è disponibile all'indirizzo http://stackoverflow.com/questions/3823939/ nel caso in cui non si stiano utilizzando i nuovi SQL Server. –