SQL query to find Second Highest Salary

Post Reply
User avatar
stararound
Posts: 22
Joined: Wed Apr 17, 2019 1:29 pm

SQL query to find Second Highest Salary

Post by stararound »

Làm thế nào viết câu SQL để lấy ra người có lương cao thứ nhì từ bảng Employee như ví dụ sau:

Code: Select all

+---------+----------+
| Name    | Salary   |
+---------+----------+
| John    | 100      |
| Marry   | 200      |
| Petter  | 300      |
| Lynn    | 400      |
+---------+----------+
Trước hết tìm người có lương cao nhất, bằng câu SQL sau:

Code: Select all

SELECT name, MAX(salary) as salary FROM employee;
Như vậy kết hợp với câu trên để tạo ra một truy vấn lồng để tìm người có lương cao thứ 2:

Code: Select all

SELECT 
    name, 
    MAX(salary) AS salary
FROM 
    employee
WHERE 
    salary < (SELECT MAX(salary) FROM employee); 
Ta có cách thứ 2 để tìm người có lương cao thứ 2:

Code: Select all

SELECT 
    name, 
    MAX(salary) 
FROM 
    employee
WHERE 
    salary NOT IN ( SELECT Max(salary) FROM employee);
Cách thứ 3:

Code: Select all

SELECT 
    name, 
    MAX(salary) AS salary 
FROM 
    employee 
WHERE 
    salary IN (SELECT salary FROM employee MINUS SELECT MAX(salary) FROM employee);

Post Reply