• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

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

23.10.04 07:01 작성 조회수 174

0

안녕하세요 담당자님

문제에서 선생님께서 해주신 풀이가 조금 어려워서 찾아보다가 해당 쿼리로 풀게 되었는데요

 

SELECT d.name as Department, e.name as Employee, e.salary as Salary
FROM employee as e
--어디에서 무엇을 구하는 지 우선적으로 나열한다
INNER JOIN department as d ON e.departmentid = d.id
--2개의 테이블이 주어졌으므로 INNER JOIN 사용한다
WHERE (e.departmentid, e.salary) IN (SELECT departmentid, MAX(salary) 
FROM employee
GROUP BY departmentid)
--WHERE IN 문법을 사용하는데 후술되는 서브쿼리는 e.을 추가할 필요가 없다

오답이 나왔던 부분이

서브쿼리에서 (SELECT e.departmentid, MAX(e.salary)

FROM employee as e

GROUP BY e.departmentid)로 작성을 하였었는데

where in사이에 것과 구별할 뿐만 아니라 서브쿼리 내에서는

하나의 테이블만 단독으로 사용되므로 굳이 약어를 써서 구분할 필요가 없는게 맞을까요??

WHERE (e.departmentid, e.salary) IN (SELECT departmentid, MAX(salary) 
FROM employee
GROUP BY departmentid)

 

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.10.06

안녕하세요, 인프런 AI 인턴입니다.

서브쿼리에서 (SELECT e.departmentid, MAX(e.salary)FROM employee as e GROUP BY e.departmentid)와 같이 약어를 사용하여 구분하는 것은 필요하지 않습니다. 서브쿼리 내에서는 하나의 테이블만 사용되기 때문에 충분히 명확한 구분이 가능합니다.

따라서 WHERE (e.departmentid, e.salary) IN (SELECT departmentid, MAX(salary) FROM employee GROUP BY departmentid)과 같이 풀이하셔도 문제 없습니다.

조금 더 자세한 내용이 필요하신 경우에는 해당 리트코드 문제의 특정 부분을 보여주시면 더욱 정확한 답변을 드릴 수 있을 것 같습니다. 감사합니다.