inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

서브쿼리 리트코드 문제풀이

HAVING절에서 IN 사용 가능 여부

176

데잇걸즈4기_박유빈

작성한 질문수 10

1

안녕하세요.

리트코드 184Department Highest Salary 관련 질문드립니다.

이 문제를  HAVING절 서브쿼리를 활용해서 풀 때,

풀리지 않는 이유가 궁금합니다.

FROM절 서브쿼리 활용한 풀이는 이해를 했는데,

아래 HAVING절 서브쿼리로 왜 안 풀리는지도 궁금합니다..!

아래 풀이처럼 HAVING절에 IN을 쓰면 안 되는건가요?

SELECT d.name AS Department

     , e.name AS Employee

     , e.salary AS Salary

FROM employee e

    INNER JOIN department d ON e.departmentid = d.id

GROUP BY d.name

HAVING e.salary IN (SELECT MAX(salary) FROM employee)

선미님이 수업시간에 다뤄주셨던 질문인데, 다시 풀어보니까 기억이 안 나서... 재질문 드립니다.

sql

답변 1

2

송혜정

안녕하세요 유빈님, 답변 드립니다.

우선 HAVING절에 IN을 쓰는 것은 가능하며, 작성해주신 쿼리를 살펴보겠습니다.
유빈님의 쿼리에서 HAVING절 이전, 즉 GROUP BY 절 까지 실행을 해보면 아래와 같이 결과가 나옵니다. (Output 참고)

Output 상태에서 HAVING절의 내용이 실행되는데, HAVING절에서 IN 다음의 (SELECT MAX(salary) FROM employee) 서브쿼리의 결과는 90000입니다. 하지만 Output 으로 확인 할 수 있듯, GROUP BY 절 까지의 결과(Output)에서는 salary가 90000인 데이터가 없기 때문에 첨부해주신 사진과 같이 Output에 아무 결과도 나오지 않게 됩니다.

답변 내용이 도움이 되었길 바라며, 추가 문의 사항이 있다면 언제든 남겨주세요 :)

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

0

85

1

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

0

57

2

서브쿼리 질문

0

59

2

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

0

72

1

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

0

67

1

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

0

66

2

Top Earners 문제관련 질문

0

96

2

고급반 cheetsheet

0

146

2

196. Delete Duplicate Emails 좋은 코드 질문

0

140

1

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

0

125

0

강의 플랫폼

0

197

3

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

0

204

2

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

0

249

1

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

0

355

2

사용자정의함수

0

230

1

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

0

294

1

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

0

259

1

196. subquery로 풀 때, 궁금한 점

0

382

2

쿼리성능 질문드립니다.

0

312

1

리트코드 highest department salary 문제

0

257

2

The report 문제 order by부분 질문

0

269

2

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

0

420

1

DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의

0

235

1

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

0

282

1