본문 바로가기
Database/MySQL

[MySQL] 변수 처리(local variable vs. user variable)

by 데이터현 2022. 3. 31.

https://leetcode.com/problems/nth-highest-salary/

 

Nth Highest Salary - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

위 문제를 풀면서 변수(특히 지역변수 처리에 대해 알게 되어서 정리해 놓고자 함.)

테이블은 이렇게 생겼고

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. 매개변수로 들여온 값을 수정하면 시간이 더 걸림(왜 그런진 모름.. 그냥 테스트해보니 그럼)

   - 단순하게 어떤 값을 새로 생성하는거와 수정시간에서의 미세한 차이가 있지 않을까?

위에가 DECLARE M한 최종코드, 아래가 N = N -1

 

지역vs사용자 정의 참고

https://stackoverflow.com/questions/13670659/mysql-local-variables

 

MySQL local variables

I am trying to define and initialize a MySQL variable for a query. I have the following: declare @countTotal int; SET @countTotal = select COUNT(*) from nGrams; I am using MySQL in Netbeans and...

stackoverflow.com

https://dev.mysql.com/doc/refman/8.0/en/user-variables.html

 

MySQL :: MySQL 8.0 Reference Manual :: 9.4 User-Defined Variables

9.4 User-Defined Variables You can store a value in a user-defined variable in one statement and refer to it later in another statement. This enables you to pass values from one statement to another. User variables are written as @var_name, where the vari

dev.mysql.com

 

사용자 정의 함수 관련 문제

https://hkim-data.tistory.com/128

 

[프로그래머스] 입양 시각 구하기(2) (MySQL)

https://programmers.co.kr/learn/courses/30/lessons/59413 코딩테스트 연습 - 입양 시각 구하기(2) ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구..

hkim-data.tistory.com

 

'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

댓글