Know/DATABASE
rollup
Marine™
2006. 2. 15. 16:10
반응형
[출처: http://cafe.daum.net/oraclesqltuning]
해당 테이블명을 t,
각 컬럼명을 pname(품명), psize(규격), qty(수량), amount(금액) 이라고 하면,
아래와 같이 되겠네요.
SELECT pname_a, psize, qty, amount
FROM (SELECT pname, DECODE (psize, NULL, pname) pname_a, psize,
SUM (qty) qty, SUM (amount) amount,
MAX (SUM (amount)) OVER (PARTITION BY pname) sub_max
FROM t
GROUP BY pname, ROLLUP ((psize, qty)))
ORDER BY sub_max DESC, pname, amount DESC
=====================================================
--------------------------------------
품명 규격 수량 금액
--------------------------------------
사과 30 3900
대 10 1900
중 10 1000
소 10 1000
배 30 3500
대 10 1500
중 10 1000
소 10 1000
수박 30 3000
대 10 1000
중 10 1000
소 10 1000
-----------------------------------
이렇게 나타내고 싶습니다.
정렬순서는 소계의 금액순인것이 까다롭기에 질문올려봅니다.
SQL문 하나로 가능할까요?
원시데이터는 (품명, 규격,수량, 금액)입니다.
해당 테이블명을 t,
각 컬럼명을 pname(품명), psize(규격), qty(수량), amount(금액) 이라고 하면,
아래와 같이 되겠네요.
SELECT pname_a, psize, qty, amount
FROM (SELECT pname, DECODE (psize, NULL, pname) pname_a, psize,
SUM (qty) qty, SUM (amount) amount,
MAX (SUM (amount)) OVER (PARTITION BY pname) sub_max
FROM t
GROUP BY pname, ROLLUP ((psize, qty)))
ORDER BY sub_max DESC, pname, amount DESC
=====================================================
--------------------------------------
품명 규격 수량 금액
--------------------------------------
사과 30 3900
대 10 1900
중 10 1000
소 10 1000
배 30 3500
대 10 1500
중 10 1000
소 10 1000
수박 30 3000
대 10 1000
중 10 1000
소 10 1000
-----------------------------------
이렇게 나타내고 싶습니다.
정렬순서는 소계의 금액순인것이 까다롭기에 질문올려봅니다.
SQL문 하나로 가능할까요?
원시데이터는 (품명, 규격,수량, 금액)입니다.
반응형