해당 문제는 함수를 생성하는 문제
해석을 참고하여 쿼리를 작성함


n번째로 큰 급여를 반환하는 쿼리를 작성하기
n번째로 큰 급여의 정보가 없다면 null을 반환하기
create funciton mysql
사용자가 생성하는 함수로 반복되는 쿼리나 자주 사용이 되는 쿼리를 작성하기 번거로울 때
함수로 지정해서 호출하는 함수이다.
함수명과 파라미터, 데이터타입
데이터타입, 결과값이 다를 때와 같을 때 구분하기
: 쿼리문 작성하기 & 반환값구하기
create funtion 함수명(매개변수 자료형) returns 반환 자료형
begin
sql 쿼리문 1;
sql 쿼리문 2;
return 반환값
end;
create function square(a int) returns double
begin
return a*a;
end
CREATE FUNCTION CustomerLevel(credit DECIMAL(10, 2))
RETURNS VARCHAR(20) DETERMINISTIC
BEGIN
DECLARE Level VARCHAR(20);
IF credit > 50000 THEN
SET Level = 'PLATINUM';
ELSEIF (credit <= 50000 AND credit >= 10000) THEN
SET Level = 'GOLD';
ELSEIF (credit < 10000 THEN
SET Level = 'SILVER';
END IF;
RETURN (Level);
END
SELECT CustomerLevel(creditLimit)
FROM customer
출처
https://mizykk.tistory.com/122
-- n번째로 큰 급여를 반환해야한다.
CREATE FUNCTION getNthHighestSalary(N INT)
RETURNS INT
BEGIN
-- offset은 n-1의 행을 출력시키므로 나올 반환 결과물을 n-1이라고 수정해주기
SET N=N-1;
RETURN (
-- n-1번째의 행 1개 출력시키기
SELECT DISTINCT salary FROM Employee ORDER BY salary DESC
LIMIT 1 OFFSET N
);
END
반환시 select 구문을 활용하여 데이터 값을 바로 출력할 수 있도록 사용자함수를 만들었음
따라서 따로 select 절을 작성하지 않아도 바로 값이 출력