그룹핑 초보 질문하나만 드릴께요 ㅠㅠ 0 3 485

by 토리토리 [2018.08.27 15:20:09]


안녕하세요...

다음 표를 순번 1~10, 11~13을 나눠서 부분합을 구하고 싶습니다.

도움 요청좀 드릴께요 ㅠㅠ

 

순번 수량 구분자
1 976 A
2 976 A
3 948 A
4 837 A
5 1379 A
6 1327 A
7 0 A
8 1970 A
9 0 A
10 0 A
11 0 B
12 1226 B
13 1325 B

 

다음과 같이 바꾸고 싶습니다.

순번 수량 구분자
1 976 A
2 976 A
3 948 A
4 837 A
5 1379 A
6 1327 A
7 0 A
8 1970 A
9 0 A
10 0 A
소계 8413  
11 0 B
12 1226 B
13 1325 B
소계 2551  
합계 10964  
by 마농 [2018.08.27 15:53:14]

1~10, 11~13 으로 나누는 것 맞나요?
순번으로 나누는게 아니라 구분으로 나누는 것 아닌가요? (A, B)
 

WITH t AS
(
SELECT 1 seq, 976 cnt, 'A' gb FROM dual
UNION ALL SELECT  2,  976, 'A' FROM dual
UNION ALL SELECT  3,  948, 'A' FROM dual
UNION ALL SELECT  4,  837, 'A' FROM dual
UNION ALL SELECT  5, 1379, 'A' FROM dual
UNION ALL SELECT  6, 1327, 'A' FROM dual
UNION ALL SELECT  7,    0, 'A' FROM dual
UNION ALL SELECT  8, 1970, 'A' FROM dual
UNION ALL SELECT  9,    0, 'A' FROM dual
UNION ALL SELECT 10,    0, 'A' FROM dual
UNION ALL SELECT 11,    0, 'B' FROM dual
UNION ALL SELECT 12, 1226, 'B' FROM dual
UNION ALL SELECT 13, 1325, 'B' FROM dual
)
SELECT DECODE(GROUPING_ID(gb, seq), 3, '합계', 1, '소계', seq)  seq
     , SUM(cnt) cnt
     , gb
  FROM t
 GROUP BY ROLLUP(gb, seq)
;

 


by 우리집아찌 [2018.08.27 15:54:42]
WITH T ( NO , QTY , TP ) AS (
SELECT 1  , 976   , 'A' FROM DUAL UNION ALL
SELECT 2  , 976   , 'A' FROM DUAL UNION ALL
SELECT 3  , 948   , 'A' FROM DUAL UNION ALL
SELECT 4  , 837   , 'A' FROM DUAL UNION ALL
SELECT 5  , 1379  , 'A' FROM DUAL UNION ALL
SELECT 6  , 1327  , 'A' FROM DUAL UNION ALL
SELECT 7  , 0	  , 'A' FROM DUAL UNION ALL
SELECT 8  , 1970  , 'A' FROM DUAL UNION ALL
SELECT 9  , 0	  , 'A' FROM DUAL UNION ALL
SELECT 10 , 0	  , 'A' FROM DUAL UNION ALL
SELECT 11 , 0	  , 'B' FROM DUAL UNION ALL
SELECT 12 , 1226  , 'B' FROM DUAL UNION ALL
SELECT 13 , 1325  , 'B' FROM DUAL  
)
 SELECT CASE WHEN GROUPING(TP) = 1 THEN '합계' 
             WHEN GROUPING(NO) = 1 THEN '소계'
             ELSE TO_CHAR(NO)
        END NO
      , SUM(QTY) QTY ,  TP 
   FROM T
  GROUP BY ROLLUP (TP,(NO)) 

 


by 토리토리 [2018.08.27 17:45:48]

마농님, 우리집아찌 님 정말 감사합니다. 

덕분에 잘 해결했습니다. 

ROLLUP까지는 했는데 GROUPING, GROUPING_ID를 잘 활용을 못해서 해결을 못했었습니다 ㅠㅠ.. 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입