Você perguntou o que parece como uma pergunta razoável. Existem diferentes maneiras de fazer as coisas no SQL e às vezes alguns métodos são melhores que outros. O problema de classificação é apenas um dos muitos, muitos exemplos. A "resposta" para sua pergunta é que, em geral,
order by
vai ter um desempenho melhor do que group by
em MySQL. Embora até isso dependa dos dados específicos e do que você considera "melhor". Os problemas específicos com a pergunta são que você tem três consultas diferentes que retornam três coisas diferentes.
O primeiro retorna todos os funcionários com um "rank denso" que é o mesmo. Essa terminologia é usada propositalmente porque corresponde ao ANSI
dense_rank()
função que o MySQL não suporta. Portanto, se seus salários forem 100, 100 e 10, ele retornará duas linhas com classificação 1 e uma com classificação 2. O segundo retorna resultados diferentes se houver empates. Se os salários forem 100, 100, 10, esta versão não retornará nenhuma linha com classificação 1, duas linhas com classificação 2 e uma linha com classificação 3.
O terceiro retorna um conjunto de resultados totalmente diferente, que é apenas os salários e a classificação dos salários.
Meu comentário foi direcionado para tentar as consultas em seus dados. Na verdade, você deve decidir o que realmente quer, tanto do ponto de vista funcional quanto do desempenho.