-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
HAVING절에서 IN 사용 가능 여부
20.09.12 22:32 작성 조회수 104
1
안녕하세요.
리트코드 184. Department 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)
선미님이 수업시간에 다뤄주셨던 질문인데, 다시 풀어보니까 기억이 안 나서... 재질문 드립니다.
답변을 작성해보세요.
2
송혜정
지식공유자2020.09.14
안녕하세요 유빈님, 답변 드립니다.
우선 HAVING절에 IN을 쓰는 것은 가능하며, 작성해주신 쿼리를 살펴보겠습니다.
유빈님의 쿼리에서 HAVING절 이전, 즉 GROUP BY 절 까지 실행을 해보면 아래와 같이 결과가 나옵니다. (Output 참고)
Output 상태에서 HAVING절의 내용이 실행되는데, HAVING절에서 IN 다음의 (SELECT MAX(salary) FROM employee) 서브쿼리의 결과는 90000입니다. 하지만 Output 으로 확인 할 수 있듯, GROUP BY 절 까지의 결과(Output)에서는 salary가 90000인 데이터가 없기 때문에 첨부해주신 사진과 같이 Output에 아무 결과도 나오지 않게 됩니다.
답변 내용이 도움이 되었길 바라며, 추가 문의 사항이 있다면 언제든 남겨주세요 :)
답변 1