Pytałeś, co wydaje się jak rozsądne pytanie. Istnieją różne sposoby działania w SQL i czasami niektóre metody są lepsze od innych. Problem rankingu to tylko jeden z wielu przykładów. „Odpowiedź” na Twoje pytanie jest taka, że ogólnie order by
będzie działać lepiej niż group by
w MySQL. Chociaż nawet to zależy od konkretnych danych i tego, co uważasz za „lepsze”.
Specyficzne problemy z pytaniem polegają na tym, że masz trzy różne zapytania, które zwracają trzy różne rzeczy.
Pierwsza zwraca wszystkich pracowników z „gęstą rangą”, która jest taka sama. Ta terminologia jest używana celowo, ponieważ odpowiada ANSI dense_rank()
funkcja, której MySQL nie obsługuje. Tak więc, jeśli twoje zarobki wynoszą 100, 100 i 10, zwróci dwa wiersze z rankingiem 1 i jeden z rankingiem 2.
Drugi zwraca inne wyniki, jeśli są remisy. Jeśli pensje wynoszą 100, 100, 10, ta wersja nie zwróci żadnych wierszy z rankingiem 1, dwa wiersze z rankingiem 2 i jeden wiersz z rankingiem 3.
Trzecia zwraca zupełnie inny zestaw wyników, czyli tylko pensje i ranking wynagrodzeń.
Mój komentarz był skierowany na wypróbowanie zapytań na twoich danych. W rzeczywistości powinieneś zdecydować, czego naprawdę chcesz, zarówno z perspektywy funkcjonalnej, jak i wydajnościowej.