본문 바로가기

코딩일기

SQL 코드카타 123 - Second Highest Salary

https://leetcode.com/problems/second-highest-salary/description/

 

Colunm Name Type
id int
salary int

 

Employee 테이블:

  • id : 테이블의 고유 키
  • salary : 직원의 급여

Employee 테이블에서 두 번째로 높은 급여를 찾으세요. 두 번째로 높은 급여가 없는 경우 null (Pandas에서는 None)을 반환하세요.

 

select *
from Employee
order by salary desc

 

먼저 테이블을 급여의 역순으로 정렬한다.

 

select distinct salary
from Employee
order by salary desc
limit 1

 

급여 열을 중복제거해서 출력하도록하고 limit로 가장 위의 행만 출력한다.

 

select distinct salary
from Employee
order by salary desc
limit 1 offset 1

 

offset으로 첫번째 데이터를 건너뛴다,

 

select (select distinct salary
from Employee
order by salary desc
limit 1 offset 1) SecondHighestSalary

 

해당 쿼리를 SecondHighestSalary라는 이름으로 출력해준다.

 

offset이라는 함수를 알게되었다. rank를 사용하지 않고 데이터의 특정 순위를 찾아낼 때 유용할 것 같다.