Leetcode 177 - Nth Highest Salary
https://leetcode.com/problems/nth-highest-salary/description/
CASE 문
CREATE FUNCTION getNthHighestSalary (N INT)
RETURNS INT
BEGIN
RETURN (
SELECT
CASE WHEN COUNT(sub.Salary) < N THEN NULL
ELSE MIN(sub.Salary) -- 가장 작은 값
END
FROM(
SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT N
) sub
);
END
IF 문 >>> 건이 순차적으로 실행되어야 하는 상황에는 CASE가 적합 (구간을 특정 기준으로 나눠야 할 때)
CREATE FUNCTION getNthHighestSalary (N INT)
RETURNS INT
BEGIN
RETURN (
SELECT
IF(COUNT(sub.Salary) <N, NULL, MIN(sub.Salary))
FROM(
SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT N
) sub
);
END
LIMIT 심화
- return 구문에 서브쿼리를 활용하지 않는다면, 쿼리의 결과가 나오지 않을 시 자동으로 NULL 값 반환
CREATE FUNCTION getNthHighestSalary (N INT)
RETURNS INT
BEGIN
DECLARE A INT;
SET A = N -1; -- equal SET N = N-1; >>> LIMIT N-1,1
RETURN (
SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
# LIMIT A, 1 >>> 맨 앞에서 A개를 날리고 그 다음 1개를 가져와
LIMIT 1 OFFSET A. >>> 맨 앞에서 A개를 날리고 그 다음 1개를 가져와
);
END
'기존학습자료 > 기초 스킬' 카테고리의 다른 글
고유값 만들기 (0) | 2023.07.02 |
---|---|
기초 함수 세부 활용 (0) | 2023.06.25 |
정규표현식 (0) | 2023.06.25 |