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

Tìm mức lương cao thứ 2 theo cách tốt nhất có thể

Câu hỏi này chủ yếu hỏi tại thời điểm phỏng vấn từ các ứng viên là sinh viên mới ra trường hoặc 1 năm kinh nghiệm. Thậm chí câu hỏi này được hỏi từ tôi đôi khi tôi tham gia vào lĩnh vực phát triển web.

Vì vậy, tôi sẽ chỉ cho bạn một số cách có thể để tìm được mức lương cao thứ 2 hoặc thứ n.


Đối với Exp:Bảng nhân viên (ET)

EID Tên nhân viên Mức lương
1 Nhân viên-1 20.000
2 Nhân viên-2 22.000
3 Nhân viên-3 21.000
4 Nhân viên-4 19.000
5 Nhân viên-5 21.000

1:- Cách tìm mức lương cao thứ n không có điều kiện
Trong trường hợp này, bạn có thể sử dụng phương pháp giới hạn và tối đa rất cơ bản của sql

SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1

Trong đó n là vị trí bạn đang tìm kiếm
Nếu n =2 truy vấn sẽ trở thành

SELECT DISTINCT(state_id) FROM crm_cities ORDER BY state_id DESC LIMIT 1,1

Sản lượng sẽ là:21.000

2:- Cách tìm tất cả các nhân viên có mức lương cao thứ n trong đó điều kiện là bạn phải tìm được tất cả các nhân viên được trả lương cao thứ 2.
Trong trường hợp này, bạn có thể sử dụng tính năng truy vấn phụ của sql.

SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1)

Trong đó n là vị trí bạn đang tìm kiếm
Nếu n =2 truy vấn sẽ trở thành

SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT 1,1)

Sản lượng sẽ là:21,000, 21,000

3:- Cách tìm mức lương cao thứ 2 mà không sử dụng điều kiện LIMIT.
Trong trường hợp này, bạn có thể sử dụng điều kiện NOT IN trong sql

SELECT MAX(Salary) FROM ET
WHERE Salary NOT IN (SELECT MAX(Salary) FROM ET)

Sản lượng sẽ là:21.000

4:- Cách tìm mức lương cao thứ 2 mà không sử dụng LIMIT và Sub-Query
Trong trường hợp này, bạn có thể sử dụng phương pháp tự tham gia

SELECT MAX( E1.Salary ) FROM ET E1, ET E2 WHERE E1.Salary < E2.Salary
Output will be: 21,000

Hy vọng điều này sẽ giúp bạn tìm được câu trả lời phù hợp với nhu cầu của mình .. 🙂

Nếu bạn thích bài đăng này, xin đừng quên đăng ký My Public Notebook để biết thêm nhiều nội dung hữu ích.


  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ách cắt ngắn bảng trong MySQL

  2. Cách khắc phục lỗi kết nối cơ sở dữ liệu MySQL JDBC 08001

  3. MySQL:Quyền truy cập bị từ chối đối với người dùng 'test' @ 'localhost' (sử dụng mật khẩu:CÓ) ngoại trừ người dùng root

  4. Thay thế chuỗi MySQL

  5. Các cách khác nhau để xem các bảng trong MySQL Server