강의

멘토링

커뮤니티

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

cirkiid님의 프로필 이미지
cirkiid

작성한 질문수

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

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

leetcode 184 문제 쿼리 질문 드립니다.

작성

·

418

0

안녕하세요! leetcode 184. Department Highest Salary 풀이영상 잘 봤습니다. 풀이영상 보기 전에 계속 답이 틀리다가 결국 성공한건 아래의 쿼리인데, 아무리 생각해도 비효율적인 쿼리처럼 보여서요! 풀이영상처럼 푸는 방법말고 with 문과 이너쿼리를 사용하는데 좀 더 간결하게 작성할 수 있는 방법이 있을까요?

with dd as (
    select d.name as name, max(e. salary) as max_salary
     from Employee e
     join Department d on e.departmentID = d.id
     group by d.name)

select d.name as Department, e.name as Employee, e.salary as Salary
from  Employee e
      join Department d on e.departmentID = d.id
      join dd on dd.name = d.name
where e.salary = dd.max_salary



답변 1

0

지식공유자 J님의 프로필 이미지
지식공유자 J
지식공유자

with 문으로 만든 임시테이블에는 name 컬럼이 필수적으로 필요한 것이 아니므로 여기서 join을 하지 말고 employee 테이블만 사용해 작성하는 편이 나을 것 같습니다.

with dd as ( 
  	select departmentid, max(salary) as max_salary
	from employee
	group by departmentid
)

이렇게 하면 전체 쿼리에서 join을 한 번 덜 사용하는 함으로서 보다 효율적인 쿼리로 작성할 수 있습니다.

cirkiid님의 프로필 이미지
cirkiid

작성한 질문수

질문하기