티스토리 뷰
---------------------------------------------------------------------------------------
요건) 2013년 월별, 부서별 매출을 출력하시오.
단, 2013년에 매출이 1개월 이상이 있는 부서는 매출이 없는 월에도 표현이 되어야 하고
매출은 0으로 출력해야 함.
---------------------------------------------------------------------------------------
SELECT A.YMD
,B.dept_no
,NVL(B.sales_amt,0)
FROM
(
-- 혹시라도 매출이 없는 월도 있을 수 있음으로 201301 ~ 201312월 12개의 행을 가지고 있는
-- 더미 집합을 만듬.
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20121201','yyyymmdd'), level), 'yyyymm') AS ymd
FROM dual
CONNECT BY LEVEL <= 12
) A left OUTER JOIN
( SELECT sale_ym, dept_no, SUM(sales_amt) AS bill_sum
FROM TS_SALES -- 월별 부서 매출 집계
WHERE sale_ym LIKE '2013%'
GROUP BY sale_ym, comm_id
) B
PARTITION BY (B.dept_no) -- 실적테이블에서 2013년에 실적이 1건이라도 있는 부서를 논리적으로
-- 파티션화해서 실적이 없는 월에도 데이터가 있는 것처럼 보여주는 효과 -- 가 있음.
ON A.YMD = B.SALE_YM
ORDER BY 1
;
Partiton Outer Join이 없었더라면 2013년에 매출이 있는 부서만 별도록 모아서 집합을 만든 다음에 조인에 참여 시키는 번잡함이 필요할 것임.
Partition Outer Join은 Oracle 10g New Feature임으로 10g 이후 버전에서만 동작함.
--- EOF ---
- Total
- Today
- Yesterday
- node.js
- 카카오 에드
- 화분벌레
- JMW 헤어드라이기기
- 유가바이트디비
- GKRS
- 오미크론
- VARIDESK
- 홈 오피스
- weka
- 별이 빚나는 밤
- 브리다 정수기
- 배당급
- 고체 향수
- Life Chair
- 남설 팔찌
- 톡토기
- 빈센트 반 고흐
- 파나소닉 비데 DL-EH10KWS
- 로니카 BCS
- Sybase IQ
- 매직 트랙패드2
- 솔리드 쿨론
- 코라나 19
- yugabyteDB
- 별잉 빛나는 밤
- 르세라핌
- Pixel Pals
- 루미큐브 종류
- 증권정보포털
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |