Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Permintaan MYSQL untuk menemukan semua karyawan dengan gaji tertinggi ke-n

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara real_escape_string dan prepare()?

  2. MySQL menonaktifkan &mengaktifkan kunci

  3. BoneCP penggunaan yang benar

  4. JSON_MERGE_PRESERVE() – Menggabungkan Beberapa Dokumen JSON di MySQL

  5. Apakah ada cara untuk menampilkan klausa WHERE hanya untuk satu bidang di MySQL?