database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41520 게시물 읽기
No. 41520
하단 합계값에 대한 비율을 구하고 싶습니다.
작성자
봉달이
작성일
2018-01-31 18:40:49
조회수
961

저번에 마농이 알려 주신 sql의 하단에 합계값의 비율을 넣고 싶어서

 

아래와 같이 수정 했습니다만..

 

뭔가 다른 방법이 있을 것도 같아서

 

마농님이 한번 봐 주셨으면 합니다.

 

감사합니다.

 

 

SELECT *

FROM (SELECT NVL(a.code, '합계') code

, NVL(SUBSTR(b.sbscrb_de, 1, 4), '합계') yyyy

, COUNT(b.mber_id) cnt

FROM egov.comtccmmndetailcode a

, tbo_cm_mberinfo_list_bak b

WHERE a.code_id = 'MEM_GBN'

AND b.mber_confm_code = 'Y'

AND a.code

= CASE WHEN b.mber_se_code IN ('7', '9', '10', '12') THEN '1'

WHEN b.mber_se_code IN ('3', '4', '11' ) THEN '6'

ELSE b.mber_se_code END

AND b.sbscrb_de IS NOT NULL

GROUP BY CUBE(a.code, SUBSTR(b.sbscrb_de, 1, 4))

)

PIVOT (SUM(cnt) FOR code IN ( '1' 구분1

, '2' 구분2

, '5' 구분5

, '6' 구분6

, '8' 구분8

, '13' 구분13

, '합계' 합계

) )

union all

select

'합계 비율(%)' mberSeCode

,ROUND(sum(구분1)/SUM(구분1+구분2+구분5+구분6+구분8+구분13)*100,2) 구분1

,ROUND(sum(구분2)/SUM(구분1+구분2+구분5+구분6+구분8+구분13)*100,2) 구분2

,ROUND(sum(구분3)/SUM(구분1+구분2+구분5+구분6+구분8+구분13)*100,2) 구분3

,ROUND(sum(구분5)/SUM(구분1+구분2+구분5+구분6+구분8+구분13)*100,2) 구분5

,ROUND(sum(구분6)/SUM(구분1+구분2+구분5+구분6+구분8+구분13)*100,2) 구분6

,ROUND(sum(구분8)/SUM(구분1+구분2+구분5+구분6+구분8+구분13)*100,2) 구분8

,ROUND(sum(구분13)/SUM(구분1+구분2+구분5+구분6+구분8+구분13)*100,2) 구분13

, 100 합계

FROM (SELECT

aa.code as mberSeCode

,count(bb.mber_id) as bb

FROM egov.comtccmmndetailcode aa

-- , tbo_cm_mberinfo_list_bak bb

, tbo_cm_mberinfo_list bb

WHERE aa.code_id = 'MEM_GBN'

AND bb.mber_confm_code = 'Y'

AND aa.code

= CASE WHEN bb.mber_se_code IN ('7', '9', '10', '12') THEN '1'

WHEN bb.mber_se_code IN ('3', '4', '11' ) THEN '6'

ELSE bb.mber_se_code END

AND bb.sbscrb_de IS NOT NULL

AND SUBSTR(bb.SBSCRB_DE,1,6) >= #{searchSYM}

AND SUBSTR(bb.SBSCRB_DE,1,6) <= #{searchEYM}

 

group by aa.code

)

PIVOT (sum(bb) FOR mberSeCode IN ( '1' 구분1

, '2' 구분2

, '5' 구분5

, '6' 구분6

, '8' 구분7

, '합계' 구분13

) )

ORDER BY 1

이 글에 대한 댓글이 총 1건 있습니다.

SELECT *
  FROM (SELECT NVL(a.code, '합계') code
             , NVL( SUBSTR(b.sbscrb_de, 1, 4)
                  , DECODE(GROUP_ID(), 0, '합계', '합계 비율(%)')
                  ) yyyy
             , DECODE(GROUP_ID(), 0, COUNT(b.mber_id)
             , ROUND(RATIO_TO_REPORT(COUNT(b.mber_id))
               OVER(PARTITION BY GROUP_ID(), GROUPING(a.code)) * 100, 2)
             ) cnt
          FROM egov.comtccmmndetailcode a
             , tbo_cm_mberinfo_list_bak b
         WHERE a.code_id = 'MEM_GBN'
           AND b.mber_confm_code = 'Y'
           AND a.code
             = CASE WHEN b.mber_se_code IN ('7', '9', '10', '12') THEN '1'
                    WHEN b.mber_se_code IN ('3', '4', '11'      ) THEN '6'
                    ELSE b.mber_se_code END
           AND b.sbscrb_de IS NOT NULL
           AND b.sbscrb_de >= #{searchSYM} || '01'
           AND b.sbscrb_de <= #{searchEYM} || '31'
         GROUP BY GROUPING SETS ( CUBE(a.code, SUBSTR(b.sbscrb_de, 1, 4))
                                , ROLLUP(a.code)
                                )
        )
 PIVOT (SUM(cnt) FOR code IN (  '1'   구분1
                             ,  '2'   구분2
                             ,  '5'   구분5
                             ,  '6'   구분6
                             ,  '8'   구분8
                             , '13'   구분13
                             , '합계' 합계
                            ) )
 ORDER BY yyyy
;

마농(manon94)님이 2018-02-01 08:49:11에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41524view pk 컬럼을 다른테이블에 참조키로 사용할수 없나요?
전윤기
2018-02-14
691
41522주소에서 번지까지만 추출 [3]
쿼리질문
2018-02-06
925
41521insert시 점점 느려지는 현상
황의중
2018-02-01
875
41520하단 합계값에 대한 비율을 구하고 싶습니다. [1]
봉달이
2018-01-31
961
41519도와 주세요.. 제발.. 쿼리 문제 입니다. [3]
도와주세요..제발
2018-01-31
952
41518한글 <ㅡ> 영문 변환 관련 질문입니다. [1]
허광민
2018-01-29
900
41517저번에 마농님이 봐 주신 sql 입니다. [1]
봉달이
2018-01-26
1021
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.071초, 이곳 서비스는
	PostgreSQL v10.1로 자료를 관리합니다