-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
리트코드 177번 3번째 풀이 DISTINCT 와 LIMIT 의 순서
23.03.10 21:45 작성 23.03.10 21:54 수정 조회수 247
0
LeetCode 177 번에서 LIMIT, OFFSET 을 사용해서 문제를 풀라고 하셨을때
DISTINCT 와 LIMIT 를 같이 쓰셨던데 그것들 중 뭐가 먼저 작동하는지 작동 순서가 궁급합니다.
아래는 강사님의 풀이입니다
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N = N-1;
RETURN (
SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC LIMIT 1 OFFSET N
);
END
그리고 아래의 데이터가 input 이라고 생각해보면
처음 제 생각은 이랬습니다 ORDER BY -> LIMIT -> DISTINCT 순대로 실행된다면
N=2 일때 우선 ORDER BY Salary DESC 를 진행해도 Salary 값이 같으므로 100, 100 그대로일 것이고, 여기서 LIMIT 를 하면 1개만 가져와서 100 이 될겁니다. 거기서 DISTINCT 를 해도 100 이 될거고요
근데 결과가 그렇게 나오지 않는 걸 보면 위의 제가 생각했던 순서가 틀린거겠죠?
ORDER BY -> DISTINCT -> LIMIT 가 맞나요?
N = 2 일때 ORDER BY Salary DESC 를 진행해도 Salary 값이 같으므로 100, 100 그대로일 거고, 여기서 DISTINCT 를 하여 100 이 되고, LIMIT 를 하면 데이터가 1개이므로 2번째로 큰 Salary 를 구할 수 없어서 null 이 되는 것인가요?
ORDER BY, DISTINCT, LIMIT 의 작동 순서를 알고싶습니다
답변을 작성해보세요.
0
답변 1