Anda telah menanyakan seperti apa seperti pertanyaan yang masuk akal. Ada berbagai cara dalam melakukan sesuatu dalam SQL dan terkadang beberapa metode lebih baik daripada yang lain. Masalah peringkat hanyalah salah satu dari banyak contoh. "Jawaban" untuk pertanyaan Anda adalah bahwa, secara umum, order by
akan berkinerja lebih baik daripada group by
di MySQL. Meskipun itu tergantung pada data tertentu dan apa yang Anda anggap "lebih baik".
Masalah spesifik dengan pertanyaan tersebut adalah Anda memiliki tiga kueri berbeda yang mengembalikan tiga hal berbeda.
Yang pertama mengembalikan semua karyawan dengan "pangkat padat" yang sama. Terminologi itu digunakan dengan sengaja karena sesuai dengan dense_rank()
ANSI fungsi yang tidak didukung MySQL. Jadi, jika gaji Anda 100, 100, dan 10, itu akan mengembalikan dua baris dengan peringkat 1 dan satu dengan peringkat 2.
Yang kedua mengembalikan hasil yang berbeda jika ada ikatan. Jika gaji 100, 100, 10, versi ini tidak akan mengembalikan baris dengan peringkat 1, dua baris dengan peringkat 2, dan satu baris dengan peringkat 3.
Yang ketiga mengembalikan kumpulan hasil yang sama sekali berbeda, yang hanya berupa gaji dan peringkat gaji.
Komentar saya diarahkan untuk mencoba kueri pada data Anda. Bahkan, Anda harus memutuskan apa yang sebenarnya Anda inginkan, baik dari perspektif fungsional maupun kinerja.