문제
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번째로 높은 급여 단하나를 반환합니다.
'코딩테스트 > SQL' 카테고리의 다른 글
SQL > HackerRank The PADS (MySQL) (0) | 2024.08.06 |
---|---|
SQL > 프로그래머스 276035 [level 4] FrontEnd 개발자 찾기 (0) | 2024.07.31 |
SQL > 프로그래머스 131124 [level 4] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2024.07.30 |
SQL > 프로그래머스 276036 [level 4] 언어별 개발자 분류하기 (0) | 2024.07.02 |
SQL > 프로그래머스 59413 [level 4] 입양 시각 구하기(2) (0) | 2024.07.01 |