Mysql
 sql >> Database >  >> RDS >> Mysql

Query MySQL per trovare tutti i dipendenti con l'ennesimo stipendio più alto

Hai chiesto cosa sembra come una domanda ragionevole. Esistono diversi modi di fare le cose in SQL e talvolta alcuni metodi sono migliori di altri. Il problema della classifica è solo uno dei tanti, tanti esempi. La "risposta" alla tua domanda è che, in generale, order by funzionerà meglio di group by in MySQL. Anche se anche questo dipende dai dati particolari e da ciò che ritieni "migliore".

I problemi specifici con la domanda sono che hai tre query diverse che restituiscono tre cose diverse.

Il primo restituisce tutti i dipendenti con un "grado denso" che è lo stesso. Tale terminologia viene utilizzata di proposito perché corrisponde all'ANSI dense_rank() funzione che MySQL non supporta. Quindi, se i tuoi stipendi sono 100, 100 e 10, restituiranno due righe con una classifica di 1 e una con una classifica di 2.

Il secondo restituisce risultati diversi in caso di parità. Se gli stipendi sono 100, 100, 10, questa versione non restituirà righe con una classifica di 1, due righe con una classifica di 2 e una riga con una classifica di 3.

Il terzo restituisce un insieme di risultati completamente diverso, che sono solo gli stipendi e la classifica degli stipendi.

Il mio commento era diretto a provare le query sui tuoi dati. In effetti, dovresti decidere cosa vuoi effettivamente, sia dal punto di vista funzionale che prestazionale.