inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백문이불여일타] 데이터 분석을 위한 고급 SQL

리트코드 177번 3번째 풀이 DISTINCT 와 LIMIT 의 순서

441

이자영

작성한 질문수 4

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 의 작동 순서를 알고싶습니다

 

 

 

sql

답변 1

-1

지식공유자 J

작동 순서는 아래와 같습니다.
1. SELECT DISTINCT
2. ORDER BY
3. LIMIT 1 OFFSET N

순위 함수 연습 문제 - 스테디셀러 작가 찾기

0

88

1

문제 내용이 잘못된 것 같습니다.

0

59

2

서브쿼리 질문

0

61

2

[수업질문] 서브쿼리 > null데이터 avg사용 주의

0

73

1

서브쿼리는 언제 작성하는건가요?

0

69

1

안녕하세요 질문드립니다.

0

66

2

Top Earners 문제관련 질문

0

97

2

고급반 cheetsheet

0

150

2

196. Delete Duplicate Emails 좋은 코드 질문

0

143

1

a.id = 1과 b.id=1이 없어도 되는 이유

0

127

0

강의 플랫폼

0

199

3

리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요

0

205

2

ERD 읽는법에 추가 질문 있어요

0

252

1

lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답

0

360

2

사용자정의함수

0

230

1

이 문제 inner join이 이해가 안됩니다.

0

298

1

평균 함수 사용할 때 주의점과 해결법

0

261

1

196. subquery로 풀 때, 궁금한 점

0

385

2

쿼리성능 질문드립니다.

0

315

1

리트코드 highest department salary 문제

0

260

2

The report 문제 order by부분 질문

0

271

2

리트코드 서브쿼리 문제 질문

0

422

1

DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의

0

237

1

서브쿼리의 활용사례 및 조인관련질문

0

287

1