코딩테스트/SQL
SQL > LeetCode 177. Nth Highest Salary (MySQL)
Porits789
2024. 8. 3. 15:05
문제
https://leetcode.com/problems/nth-highest-salary/description/
풀이
SQL로 함수를 처음 구성해봐서 로직이 어떤식으로 돌아가는지 이해에 초점을 맞추고 진행했습니다.
우선 전체 코드를 보여드리고 코드를 나누어가면서 설명하고자 합니다.
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N = N-1;
RETURN (
# Write your MySQL query statement below.
SELECT DISTINCT(salary) from Employee order by salary DESC
LIMIT 1 OFFSET N
);
END
기본적인 함수의 구성
MySQL에서 기본적인 함수의 형태는 다음과 같습니다.
CREATE FUNCTION function_name (parameter_name parameter_type, ...)
RETURNS return_data_type
BEGIN
-- 함수 본문
DECLARE variable_name variable_type;
-- SQL 문장
RETURN return_value;
END;
추가 예시로 덧셈 함수를 들어보겠습니다.
CREATE FUNCTION add_numbers (a INT, b INT) RETURNS INT
BEGIN
RETURN a + b;
END;
코드 분석
- 함수 선언
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
: 정수형 N을 인자로 받고 정수값을 반환합니다.
- N값 조정
SET N = N-1;
: OFFSET 구문이 0부터 시작하기 때문에 첫번째로 높은 급여를 가져오려면 OFFSET이 0이되도록 만들어야하기 때문입니다.
- SQL 쿼리
RETURN (
# Write your MySQL query statement below.
SELECT DISTINCT(salary) FROM Employee ORDER BY salary DESC
LIMIT 1 OFFSET N
);
: 문제의 조건에 따라서 Employee의 salary를 내림차순으로 나열하고 OFFSET을 이용해 상위 N개의 급여를 선택합니다.
LIMIT을 사용해서 N번째로 높은 급여 단하나를 반환합니다.