Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 그로스 해킹
- lightgbm
- 컨브넷
- 분석 패널
- 3기가 마지막이라니..!
- XGBoost
- Growth hacking
- 스태킹 앙상블
- 부트 스트래핑
- pmdarima
- 인프런
- python
- sql
- WITH CUBE
- tableau
- 데이터 정합성
- 그로스 마케팅
- 그룹 연산
- WITH ROLLUP
- 데이터 증식
- ARIMA
- 데이터 핸들링
- 로그 변환
- 마케팅 보다는 취준 강연 같다(?)
- DENSE_RANK()
- 캐글 산탄데르 고객 만족 예측
- 리프 중심 트리 분할
- ImageDateGenerator
- 캐글 신용카드 사기 검출
- splitlines
Archives
- Today
- Total
LITTLE BY LITTLE
SQL 예제 (WINDOWING 절) 본문
Q1.
emp 테이블 내 사원 이름, 직업, 월급을 출력하고, 직업 별 사원들의 월급 합계를 높은 순으로 보여주시오.
select ename, job, sal,
sum(sal) over(partition by job order by sal desc
range between unbounded preceding and unbounded following) as "직업별 합계"
from emp;
select ename, job, sal,
sum(sal) over(partition by job order by sal desc
range between unbounded preceding and current row) as "직업별 합계"
from emp;
→ unbounded following이었을 때에는, clerk의 직업별 합계 값이 모두 동일하게 job 별로 집계되어 3,050이었던 반면, current row까지로 입력한 결과 직업별 합계가 current row까지 job 별로 집계된 모습
윈도우 함수 - WINDOWING 절
" RANGE BETWEEN ... AND ...."
※ default는 range between unbounded preceding and current row이다.
→ range는 집합으로 묶인 그룹을 1개의 행으로 인식
예제 (emp, dept 테이블)
1.rows between .. and ..
-- rows를 이용한 예제
select dept, id, salary,
sum(salary) over (partition by dept order by id rows between unbounded preceding and current row) col
from (
select 20 dept, 100 id, 20000 salary union all
select 20 dept, 101 id, 30000 salary union all
select 20 dept, 101 id, 10000 salary union all
select 20 dept, 102 id, 9000 salary union all
select 20 dept, 103 id, 17000 salary
) D;
→ default로 unbounded preceding(1번째 행)부터 current(현재 행)까지 계산된 col 값이 id별로 각각 나오는 모습
2.range between .. and ..
(같은 쿼리 range로만 변경)
→ order by 로 묶은 id 별로 같은 col 값이 나오는 모습 (묶인 그룹을 1개의 행으로 인식)
참고
'SQL > 데이터 분석을 위한 SQL레시피' 카테고리의 다른 글
Comments