인프런 커뮤니티 질문&답변

[SQL 실전반 4기] 서홍시님의 프로필 이미지

작성한 질문수

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

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

안녕하세요 리트코드 184번 문제 관련하여 질문드립니다.(알리아스 관련)

22.05.11 20:24 작성

·

205

1

안녕하세요. 리트코드 184번 문제 풀이를 듣기 전 혼자 풀이 할 때는
WHERE 절 다중 컬럼 서브쿼리를 활용하여 문제를 풀었는데요.
 
서브쿼리 사용 전 JOIN 작성 시 테이블 마다 알리아스를 주고,
아래와 같이 쿼리를 짰는데 에러가 나더라구요.
(처음에는 WHERE 절에도 알리아스를 써서 'WHERE절 알리아스 사용 불가능' 때문에 에러뜨나 하다가,
SELECT 절 알리아스까지 모두 바꿔주니 제출이 되던데 혹시 이 쿼리에 문제점이 있을 까요?)
 
아래는 알리아스 모두 제거 후 제출 성공 뜬 쿼리입니다.
 
추가로 이전에 어떤 분이 질문 남겨주셨을 때, WHERE절 다중행 서브쿼리로 푸셔서 제출이 안되셨다고 하셨는데,
저는 다중컬럼 서브퀴리로 풀어서 제출이 된건가요? 해당 쿼리로 풀어도 문제는 없는게 맞는지 궁금합니다.

답변 1

0

송혜정님의 프로필 이미지
송혜정
지식공유자

2022. 05. 12. 13:55

안녕하세요, 답변 드립니다 :)

1. 알리아스 관련

적어주신 첫번째 쿼리에서 Employee 테이블에 알리아스를 E 라고 적용하지 않은채로 SELECT 절에 사용하여 오류가 발생한 것으로 보입니다. FROM Employee AS E 와 같이 적용하신 후, 첫번째 쿼리와 동일하게 SELECT 절을 적어주시면 오류 없이 동작합니다.

2. 다중컬럼 서브쿼리 관련

https://www.inflearn.com/questions/43204
아마 이 질문과 관련된 내용을 질문 주신 것 같은데요, WHERE Salary IN (SELECT MAX(Salary) FROM  Employee GROUP BY DepartmentId) 와 같이 작성하면, 출력된 MAX(Salary)가 어떤 부서의 값인지 모르기 때문에 오류가 발생합니다. 따라서 DepartmentID도 함께 매칭될 수 있도록 풀이하신 것처럼 다중컬럼 서브쿼리를 이용해야 합니다.