Попитахте какво изглежда като разумен въпрос. Има различни начини за правене на нещата в SQL и понякога някои методи са по-добри от други. Проблемът с класирането е само един от много, много примери. "Отговорът" на вашия въпрос е, че по принцип order by
ще работи по-добре от group by
в MySQL. Въпреки че дори това зависи от конкретните данни и това, което смятате за „по-добро“.
Конкретните проблеми с въпроса са, че имате три различни заявки, които връщат три различни неща.
Първият връща всички служители с "плътен ранг", който е един и същ. Тази терминология се използва нарочно, защото съответства на ANSI dense_rank()
функция, която MySQL не поддържа. Така че, ако заплатите ви са 100, 100 и 10, той ще върне два реда с класиране 1 и един с класиране 2.
Вторият връща различни резултати, ако има равенства. Ако заплатите са 100, 100, 10, тази версия няма да върне редове с класиране 1, два реда с класиране 2 и един ред с класиране 3.
Третият връща съвсем различен набор от резултати, който представлява само заплатите и класирането на заплатите.
Коментарът ми беше насочен към изпробване на заявките за вашите данни. Всъщност трябва да решите какво всъщност искате, както от функционална, така и от гледна точка на производителността.