inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

데이터 분석 SQL Fundamentals

조인 실습 - 02

With 문

565

Taylor Shin
0

강사님 안녕하세요,

조인실습2에서 부서명 SALES와 RESEARCH 소속 직원별로 과거부터 현재까지 모든 급여를 취합한 평균 급여 예시가 조금 헷갈립니다. With 문이 서브쿼리 역할을 하는걸로 이해하고 있는데 해당 예시에서 왜 with문이 왜 필요한지, with문 또는 서브쿼리 사용하지 않고 쿼리를 진행시키는 방법이 있는지 궁금합니다ㅠ

sql postgresql dbms/rdbms

답변 2

0

권 철민

안녕하십니까,

강의에서도 말씀 드리지만, with절을 사용해서 제가 설명을 드리는 이유는 중요 포인트마다 집합 레벨을 설명드리고, 어떻게 전체 sql이 구성 되는지 차근차근 나눠서 설명드리기 위함입니다.

with절을 사용하지 않고 아래와 같이 인라인 뷰 형태로 적용해도 됩니다. 다만 제가 설명상 집합 레벨로 설명 드리기가 좀 더 복잡해 질 수 있습니다.

select empno, max(ename) as ename, avg(sal) as avg_sal

from

(

select a.dname, b.empno, b.ename, b.job, c.fromdate, c.todate, c.sal

from hr.dept a

join hr.emp b on a.deptno = b.deptno

join hr.emp_salary_hist c on b.empno = c.empno

where a.dname in('SALES', 'RESEARCH')

order by a.dname, b.empno, c.fromdate

) a group by empno;

또한 아래와 같이 인라인 뷰를 사용하지 않아도 최종 집합을 만들 수 있습니다. 하지만 아래 SQL은 중간 집합이 어떻게 만들어지고, 이것들이 어떻게 최종 집합으로 만들어 지는지 설명드리기에 체계적이지 못할 수 있기에 사용하지 않았습니다.

select b.empno, max(b.ename) as ename, avg(c.sal) as avg_sal

from hr.dept a

join hr.emp b on a.deptno = b.deptno

join hr.emp_salary_hist c on b.empno = c.empno

where a.dname in('SALES', 'RESEARCH')

group by b.empno

감사합니다.

 

 

0

Taylor Shin

감사합니다 강사님. 많은 도움이 되었습니다

SQL 경험 없이 DB 정리 업무를 맡았는데 어디까지 공부해야 할까요?

0

208

1

진로 관련해서 질문 남깁니다...

0

384

0

강의 듣기전에 고민이 있어서 문의드립니다 !

1

411

1

속았어요 ㅠㅠ, 왕초보인데, gui 이었으면..

0

383

0

완강 후 궁금한 점

0

346

1

클라우드 설정 - 테이블 생성후, 파티션 나누기에서 battle_datetime 옵션이 목록에서 확인되지 않습니다.

0

384

0

서브쿼리

0

409

1

초기환경 설치에 관한 자료는 어디에 있나요

0

431

1

혹시 쿼리를 빨리 읽는 방법이 있을까요?

0

974

1

as 별칭을 한글로 하고 싶을 때

0

421

1

BigQuery 입문 강의 수강 후 dataset 선정 및 진행 방향성

0

538

1

강의 잘보고있습니다 !

0

497

1