176. Second Highest Salary
Write an SQL query to report the second highest salary from the Employee table. If there is no second highest salary, the query should report null.
월급이 2번째로 많은 사람을 찾는 문제다. 두 번째로 많은 사람이 없다면 NULL로 출력된다.
LIMIT
의 활용을 알아볼 수 있는 문제였다.
- 내 풀이
SELECT salary AS SecondHighestSalary FROM (SELECT salary , RANK() OVER (ORDER BY salary DESC) rnk FROM Employee) Employee WHERE rnk = 2; -- RANK() 함수는 단독으로 쓰지 않고 윈도우 함수로만 쓰이는군
- 강사님 풀이1
SELECT MAX(salary) FROM employee WHERE salary < (SELECT MAX(salary) -- 두 번째 MAX() 값을 뽑을 수 있음 FROM employee)
- 강사님 풀이2
SELECT salary FROM employee ORDER BY salary DESC LIMIT 1, 1 -- `LIMIT 1, 1`은 두번 째부터 1개의 값을 가져오겠다는 뜻이므로 두 번째로 많은 사람을 뽑을 수 있다
LIMIT
로 행을 지정해서 가져올 수 있다!- 예를 들어 다섯 번째부터 10개를 가져오겠다 :
LIMIT 4, 10
- 강사님 풀이3
-- LIMIT와 비슷 SELECT salary FROM employee ORDER BY salary DESC LIMIT 1 OFFSET 1
- 다섯 번째부터 10개를 가져오겠다 :
LIMIT 10 OFFSET 4
⚠️ LIMIT는 문제에서 원하는 것처럼 NULL 값이 나오지 않을 수도 있기 때문에
돌리기 전에 한번 해보고 판단할 것!