176. Second Highest Salary

hyeh·2022년 8월 26일
0

알고리즘 문제풀이

목록 보기
12/15

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 값이 나오지 않을 수도 있기 때문에
돌리기 전에 한번 해보고 판단할 것!

profile
좌충우돌 천방지축 룰루랄라 데이터 공부

0개의 댓글