목록의 마지막줄에 전체 합계 넣는거 어떻게 하는지요? 2 9 22,790

by 프리어 [SQL Query] [2013.05.07 13:50:53]



국가   1월   2월
--------------------------
한국   100   10
일본    200  100
미국    50    100
  350  210


위처럼 하고자 하는데 union으로 따로 합계내서 붙여주는 방법외에 가능한 방법이 있는지요?
by 우리집아찌 [2013.05.07 13:54:56]

ROLLUP ..

by 채용근 [2013.05.07 14:48:45]

ROLLUP시 괄호를 한번더 감싸면 총계가 나옵니다.

by 우리집아찌 [2013.05.07 14:59:24]
 
-- 초간단 답변
WITH COUNTRY ( country , mon1 , mon2 ) AS (
     SELECT '한국' , 100 , 10 FROM DUAL
UNION ALL SELECT '일본' , 200 , 100 FROM DUAL
UNION ALL SELECT '미국' , 50 , 100 FROM DUAL
)


SELECT country , sum(mon1) , sum(mon2)  FROM COUNTRY
GROUP BY  ROLLUP ( country )
 

by 프리어 [2013.05.07 15:29:55]

답변 감사합니다.. 덕분에 해결했네요.. ㅎㅎ
그런데 한가지 더 궁금한게 앞에 country뿐만 아니라 다른 제목 컬럼 예를 들어
country    area   mon1    mon2
한국   서울    100    200
일본    도쿄    10 100
.
.
이런식으로 있을경우에 전체합계가 안되고 좀 부분적으로 되는거같던데 이름컬럼이 다수일때도
전체합계를 낼수 있나요?


by 디케이 [2013.05.07 15:48:34]
 
-- 초간단 답변
WITH COUNTRY ( country , city, mon1 , mon2 ) AS (
     SELECT '한국', '서울' , 100 , 10 FROM DUAL
UNION ALL SELECT '한국', '부산' , 200 , 100 FROM DUAL
UNION ALL SELECT '일본', '도쿄' , 200 , 100 FROM DUAL
UNION ALL SELECT '미국', '뉴욕' , 50 , 100 FROM DUAL
)
 
--부분및전체합 
SELECT country 
   , decode(1, grouping(country), '전체합계', grouping(city), '부분합계', city) city
   , sum(mon1) 
   , sum(mon2) 
 FROM COUNTRY
GROUP BY ROLLUP ( country, city )
;


--전체합만
SELECT country 
   , decode(1, grouping(country), '전체합계', grouping(city), '부분합계', city) city
   , sum(mon1) 
   , sum(mon2) 
 FROM COUNTRY
GROUP BY GROUPING SETS ((country, city),())
;

by 프리어 [2013.05.07 18:39:14]

답변 감사합니다.. 덕분에 많이 배우네요..


by 우리집아찌 [2013.05.07 15:52:50]
-- 위에 채용근님이 써주셨었는데 ㅡㅡ ... 
WITH COUNTRY ( country , area , mon1 , mon2 ) AS (
     SELECT '한국' , 'SEOUL' , 100 , 10 FROM DUAL
UNION ALL SELECT '한국' , 'BUSAN' , 100 , 10 FROM DUAL
UNION ALL SELECT '미국' ,'NY' ,50 , 100 FROM DUAL
UNION ALL SELECT '미국' ,'LA' ,50 , 100 FROM DUAL
)


SELECT country , area , SUM(mon1) , SUM(mon2)  FROM COUNTRY
GROUP BY ROLLUP (( country ,area ))

by 디케이 [2013.05.07 15:57:23]
오 rollup 안에 괄호로 한번더 감싸주니 전체총계를 볼 수 있군요.

항상 Grouping Set을 이용했는데 하나 배웠네요.. 감사

by 프리어 [2013.05.07 18:38:40]

오.... 감사합니다.. 해도 안되길래 방법이 없나 하고 계속 고민했었는데 덕분에 해결했습니다.. 감사합니다.

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