in MySQL, voglio selezionare i 2 elementi di fondo di ogni categoriaquery SQL per selezionare in basso a 2 per ogni categoria
Category Value
1 1.3
1 4.8
1 3.7
1 1.6
2 9.5
2 9.9
2 9.2
2 10.3
3 4
3 8
3 16
mi Dare:
Category Value
1 1.3
1 1.6
2 9.5
2 9.2
3 4
3 8
Prima ho migrato da sqlite3 ho avuto per prima cosa selezionare un valore più basso da ogni categoria, quindi escludendo tutto ciò che si è unito a quello, ho dovuto selezionare nuovamente il più basso da ogni categoria. Quindi qualcosa di uguale a quello nuovo più basso o meno in una categoria vinta. Questo avrebbe anche scelto più di 2 in caso di parità, il che era fastidioso ... Aveva anche un runtime molto lungo.
Il mio obiettivo finale è contare il numero di volte in cui un individuo è in uno dei 2 più bassi di una categoria (c'è anche un campo nome) e questa è l'unica parte che non so come fare. Grazie
C'è anche un ID che è unico per ogni riga? –
Dato che non ti piacciono i legami, come pensi di evitarli? Qualsiasi soluzione che verrà a crearsi in qualche modo dovrà fare i conti con i legami, quindi dovresti cercare di specificare esplicitamente le regole che li governano. –
Ho taggato questa domanda con 'greatest-n-per-group' perché è simile a molte altre domande poste su StackOverflow con quel tag. Anche se capisco che stai chiedendo i * minimi * valori per gruppo, la tecnica per risolverlo è la stessa. –