• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

HAVING절에서 IN 사용 가능 여부

20.09.12 22:32 작성 조회수 104

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)

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

답변 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에 아무 결과도 나오지 않게 됩니다.

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