Ptali jste se, jak se zdá jako rozumná otázka. Existují různé způsoby, jak dělat věci v SQL a někdy jsou některé metody lepší než jiné. Problém hodnocení je jen jedním z mnoha a mnoha příkladů. "Odpověď" na vaši otázku je, že obecně order by
bude fungovat lépe než group by
v MySQL. I když i to závisí na konkrétních datech a na tom, co považujete za "lepší".
Konkrétní problémy s otázkou jsou, že máte tři různé dotazy, které vracejí tři různé věci.
První vrátí všechny zaměstnance se „hustým pořadím“, které je stejné. Tato terminologie je použita záměrně, protože odpovídá ANSI dense_rank()
funkce, kterou MySQL nepodporuje. Pokud jsou tedy vaše platy 100, 100 a 10, vrátí dva řádky s hodnocením 1 a jeden s hodnocením 2.
Druhý vrátí jiné výsledky, pokud existují remízy. Pokud jsou platy 100, 100, 10, tato verze nevrátí žádné řádky s hodnocením 1, dva řádky s hodnocením 2 a jeden řádek s hodnocením 3.
Třetí vrátí úplně jinou sadu výsledků, což jsou pouze platy a pořadí platů.
Můj komentář směřoval k vyzkoušení dotazů na vaše data. Ve skutečnosti byste se měli rozhodnout, co vlastně chcete, a to jak z funkčního, tak z hlediska výkonu.