Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn MYSQL để tìm tất cả nhân viên có mức lương cao thứ n

Bạn đã hỏi điều gì dường như như một câu hỏi hợp lý. Có nhiều cách hoạt động khác nhau trong SQL và đôi khi một số phương pháp tốt hơn những phương pháp khác. Vấn đề xếp hạng chỉ là một trong rất nhiều ví dụ. "Câu trả lời" cho câu hỏi của bạn nói chung là order by sẽ hoạt động tốt hơn nhóm group by trong MySQL. Mặc dù điều đó còn phụ thuộc vào dữ liệu cụ thể và những gì bạn cho là "tốt hơn".

Các vấn đề cụ thể với câu hỏi là bạn có ba truy vấn khác nhau trả về ba thứ khác nhau.

Đầu tiên trả về tất cả các nhân viên có "cấp bậc dày đặc" giống nhau. Thuật ngữ đó được sử dụng có chủ đích vì nó tương ứng với ANSI dense_rank() chức năng mà MySQL không hỗ trợ. Vì vậy, nếu mức lương của bạn là 100, 100 và 10, nó sẽ trả về hai hàng có xếp hạng là 1 và một có xếp hạng là 2.

Kết quả thứ hai trả về các kết quả khác nhau nếu có ràng buộc. Nếu mức lương là 100, 100, 10, phiên bản này sẽ không trả về hàng nào có xếp hạng là 1, hai hàng có xếp hạng là 2 và một hàng có xếp hạng là 3.

Kết quả thứ ba trả về một tập hợp kết quả hoàn toàn khác, chỉ là tiền lương và thứ hạng của mức lương.

Nhận xét của tôi hướng đến việc thử các truy vấn trên dữ liệu của bạn. Trên thực tế, bạn nên quyết định những gì bạn thực sự muốn, cả từ góc độ chức năng và hiệu suất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thể chèn dữ liệu vào dạng xem MySQL không?

  2. Doctrine2 với Symfony2 không nhận dạng ký tự db và đối chiếu

  3. Chọn phần trăm hàng từ bảng SQL?

  4. sudo yum cài đặt xung đột php55w-mysqlnd

  5. hiển thị dòng mới mysql trong HTML