https://leetcode.com/problems/nth-highest-salary/
위 문제를 풀면서 변수(특히 지역변수 처리에 대해 알게 되어서 정리해 놓고자 함.)
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
RETURN (
# Write your MySQL query statement below.
);
END
위와 같은 함수가 주어졌을 때 아래처럼 처리해야 함
최종 결과 쿼리
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;
RETURN (
# Write your MySQL query statement below.
SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET M
);
END
알게 된 것.
1. @ 붙는 변수는 사용자 정의 변수로 지역변수와 다름
2. 지역(로컬) 변수는 프로시저(Procedure) 또는 트리거(Trigger) 내에서 로컬 변수 및 입력 매개 변수로 사용할 수 있다. ( 위의 경우처럼)
3. 함수에서 DECLARE에서 선언하면 되고, 값 변경 시 SET 사용
4. RETURN 문에서는 N - 1 이 안됨
5. 매개변수로 들여온 값을 수정하면 시간이 더 걸림(왜 그런진 모름.. 그냥 테스트해보니 그럼)
- 단순하게 어떤 값을 새로 생성하는거와 수정시간에서의 미세한 차이가 있지 않을까?
지역vs사용자 정의 참고
https://stackoverflow.com/questions/13670659/mysql-local-variables
https://dev.mysql.com/doc/refman/8.0/en/user-variables.html
사용자 정의 함수 관련 문제
https://hkim-data.tistory.com/128
'Database > MySQL' 카테고리의 다른 글
[MySQL] 데이터 삭제 (0) | 2022.03.31 |
---|---|
[MySQL] 그룹별 상위 N 개 (0) | 2022.03.31 |
[MySQL] rank함수 - 랭킹 (0) | 2022.03.31 |
[MySQL] N번째로 큰 값 (0) | 2022.03.31 |
[MySQL] JOIN 이후 NULL 처리 (0) | 2022.03.31 |
댓글