• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

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

23.03.08 18:11 작성 조회수 299

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

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

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

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