inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

데이터 분석 SQL Fundamentals

강사님 analytic 집계함수 에 대해서 궁금한게 있습니다.

해결된 질문

342

cjh

작성한 질문수 24

0

select empno, ename, deptno, sal, avg(sal) over (partition by deptno) dept_avg_sal
	, sal - avg(sal) over (partition by deptno) dept_avg_sal_diff
from hr.emp;
with 
temp_01 as (
    select 
	 empno
	,ename
	,sal as "개인 급여"
	,avg(sal) over (partition by deptno) as "평균 급여"
    from emp
)
select empno,ename,"개인 급여","평균 급여",abs("평균 급여"-"개인 급여")
from temp_01;

 

제가 처음에 첫번째 코드처럼 작성을 하려다가

이게 group by 처럼 부하가 좀 큰 작업이라고 생각이되었습니다.

그래서 한번만 사용하고 싶어서 임시테이블을 만들고

그 테이블의 컬럼끼리 계산을 하게 했는데

 

  1. 윈도우 함수를 한번 더 사용하는것과 서브쿼리로 한번만 호출하는 것 중에서

윈도우 함수를 한번 더 호출하는게 더 나은 선택이라면

그 이유가 궁금합니다.

  1. 만약에 서브 쿼리를 사용하는데 그 서브 쿼리에 함수를 사용한 컬럼이 있다면

    그 컬럼을 호출할때마다 그 함수를 실행해서 그 결과를 가져오나요?

    아니면 한번 서브쿼리를 실행하면 그 데이터가 저장되서 값만 가져오나요?

 

sql postgresql dbms/rdbms

답변 1

1

권 철민

안녕하십니까,

서브쿼리를 with절 서브쿼리로 가정하고 말씀드리겠습니다.

강의에서 사용한 것과 같이 동일한 analytic 함수를 두번 사용한 SQL보다 With 절로 한번만 사용하는게 더 성능상 효율적입니다. with절로 사용하면 임시로 값이 만들어 지기 때문에 동일한 analytic 함수를 두번 반복할 필요가 없습니다.

제가 강의에서 사용한 SQL은 성능을 고려한 것이 아니라 강의 설명을 보다 쉽게 이해 시켜 드리기 위함입니다.

추가적으로 말씀 드리면 DBMS에 따라 동일한 레벨의 analytic 함수가 두번 반복해서 사용하면 한번만 사용하는 로직으로 자동 변환을 수행할 수도 있습니다.

감사합니다.

0

cjh

강사님 답변 감사합니다 !!

'레벨 유지'의 의미에 대한 질문

0

53

2

date_part

0

55

2

lag/lead offset 관련 질문

0

55

2

join 관련 질문 (inner join, left join)

1

100

2

배치에서 full outer join을 쓴다고 하셨는데 예시를 알 수 있을까요?

0

89

2

Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것. 실습 질문드립니다

0

53

2

rollup시 null값 매출 라벨링

0

54

2

10. 조인 실습 - 02 관련 질문

0

59

1

조인실습03 - join의 pk-fk join

0

108

2

조인실습03 - join의 pk-fk join

0

68

2

(공유)맥, 스키마 import

0

81

2

sql 입문자인데, 이 강의와 sql 코딩테스트와 연관이 있을까요?

0

137

2

1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?

0

131

2

안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.

0

91

1

섹션5 Group by 실습-01 강의 예제 질문

0

117

2

섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문

0

123

2

섹션2 조인 실습 01 강의 질문

0

133

2

lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.

0

127

1

Dbeaver오류

0

630

2

직원 별 가장 높은 매출

0

118

1

강의순서대로 실습코드순알려주세요.

0

133

1

m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?

0

130

1

rollup

0

91

2

Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.

0

355

2