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 39025 게시물 읽기
No. 39025
낮에 질문 올리신 분 계신 것 같은데... 글이 삭제 되버린 것 같네요. 원하시는게 아래 쿼리 맞는지 모르겠습니다.
작성자
아무거나
작성일
2011-10-31 21:53
조회수
4,733

 

급하게 작성해서 오류가 있을 수 있으나 수정하셔서 활용은 가능하실 것 같네요.

 

WITH temp AS

        (SELECT '199901' reg_dd, 100 a FROM DUAL

         UNION ALL

         SELECT '199902' reg_dd, 200 a FROM DUAL

         UNION ALL

         SELECT '200001' reg_dd, 500 a FROM DUAL

         UNION ALL

         SELECT '200002' reg_dd, 250 a FROM DUAL

         UNION ALL

         SELECT '200002' reg_dd, 200 a FROM DUAL

         UNION ALL

         SELECT '200003' reg_dd, 200 a FROM DUAL

         UNION ALL

         SELECT '200301' reg_dd, 1 a FROM DUAL

         UNION ALL

         SELECT '200401' reg_dd, 500 a FROM DUAL

         UNION ALL

         SELECT '200501' reg_dd, 100 a FROM DUAL

         UNION ALL

         SELECT '200601' reg_dd, 200 a FROM DUAL

         UNION ALL

         SELECT '200701' reg_dd, 450 a FROM DUAL

         UNION ALL

         SELECT '200801' reg_dd, 320 a FROM DUAL

         UNION ALL

         SELECT '200901' reg_dd, 120 a FROM DUAL

         UNION ALL

         SELECT '201001' reg_dd, 220 a FROM DUAL

         UNION ALL

         SELECT '201101' reg_dd, 520 a FROM DUAL)

SELECT   DECODE (NO

                ,1, '0~200 cnt'

                ,2, '0~200 sum'

                ,3, '0~200 (%)'

                ,4, '200~400 cnt'

                ,5, '200~400 sum'

                ,6, '200~400 (%)'

                ,7, '400~600 cnt'

                ,8, '400~600 sum'

                ,9, '400~600 (%)')

            gubun

        ,MIN (

            DECODE (reg_yy || no

                   ,'20021', c1_cnt

                   ,'20022', c1_sum

                   ,'20023', ROUND (c1_per_sum)

                   ,'20024', c2_cnt

                   ,'20025', c2_sum

                   ,'20026', ROUND (c2_per_sum)

                   ,'20027', c3_cnt

                   ,'20028', c3_sum

                   ,'20029', ROUND (c3_per_sum)))

            AS "Y2002"

        ,MIN (

            DECODE (reg_yy || no

                   ,'20031', c1_cnt

                   ,'20032', c1_sum

                   ,'20033', ROUND (c1_per_sum)

                   ,'20034', c2_cnt

                   ,'20035', c2_sum

                   ,'20036', ROUND (c2_per_sum)

                   ,'20037', c3_cnt

                   ,'20038', c3_sum

                   ,'20039', ROUND (c3_per_sum)))

            AS "Y2003"

        ,MIN (

            DECODE (reg_yy || no

                   ,'20041', c1_cnt

                   ,'20042', c1_sum

                   ,'20043', ROUND (c1_per_sum)

                   ,'20044', c2_cnt

                   ,'20045', c2_sum

                   ,'20046', ROUND (c2_per_sum)

                   ,'20047', c3_cnt

                   ,'20048', c3_sum

                   ,'20049', ROUND (c3_per_sum)))

            AS "Y2004"

        ,MIN (

            DECODE (reg_yy || no

                   ,'20051', c1_cnt

                   ,'20052', c1_sum

                   ,'20053', ROUND (c1_per_sum)

                   ,'20054', c2_cnt

                   ,'20055', c2_sum

                   ,'20056', ROUND (c2_per_sum)

                   ,'20057', c3_cnt

                   ,'20058', c3_sum

                   ,'20059', ROUND (c3_per_sum)))

            AS "Y2005"

        ,MIN (

            DECODE (reg_yy || no

                   ,'20061', c1_cnt

                   ,'20062', c1_sum

                   ,'20063', ROUND (c1_per_sum)

                   ,'20064', c2_cnt

                   ,'20065', c2_sum

                   ,'20066', ROUND (c2_per_sum)

                   ,'20067', c3_cnt

                   ,'20068', c3_sum

                   ,'20069', ROUND (c3_per_sum)))

            AS "Y2006"

        ,MIN (

            DECODE (reg_yy || no

                   ,'20071', c1_cnt

                   ,'20072', c1_sum

                   ,'20073', ROUND (c1_per_sum)

                   ,'20074', c2_cnt

                   ,'20075', c2_sum

                   ,'20076', ROUND (c2_per_sum)

                   ,'20077', c3_cnt

                   ,'20078', c3_sum

                   ,'20079', ROUND (c3_per_sum)))

            AS "Y2007"

        ,MIN (

            DECODE (reg_yy || no

                   ,'20081', c1_cnt

                   ,'20082', c1_sum

                   ,'20083', ROUND (c1_per_sum)

                   ,'20084', c2_cnt

                   ,'20085', c2_sum

                   ,'20086', ROUND (c2_per_sum)

                   ,'20087', c3_cnt

                   ,'20088', c3_sum

                   ,'20089', ROUND (c3_per_sum)))

            AS "Y2008"

        ,MIN (

            DECODE (reg_yy || no

                   ,'20091', c1_cnt

                   ,'20092', c1_sum

                   ,'20093', ROUND (c1_per_sum)

                   ,'20094', c2_cnt

                   ,'20095', c2_sum

                   ,'20096', ROUND (c2_per_sum)

                   ,'20097', c3_cnt

                   ,'20098', c3_sum

                   ,'20099', ROUND (ROUND (c3_per_sum))))

            AS "Y2009"

        ,MIN (

            DECODE (reg_yy || no

                   ,'20101', c1_cnt

                   ,'20102', c1_sum

                   ,'20103', ROUND (c1_per_sum)

                   ,'20104', c2_cnt

                   ,'20105', c2_sum

                   ,'20106', ROUND (c2_per_sum)

                   ,'20107', c3_cnt

                   ,'20108', c3_sum

                   ,'20109', ROUND (c3_per_sum)))

            AS "Y2010"

        ,MIN (

            DECODE (reg_yy || no

                   ,'20111', c1_cnt

                   ,'20112', c1_sum

                   ,'20113', ROUND (c1_per_sum)

                   ,'20114', c2_cnt

                   ,'20115', c2_sum

                   ,'20116', ROUND (c2_per_sum)

                   ,'20117', c3_cnt

                   ,'20118', c3_sum

                   ,'20119', ROUND (c3_per_sum)))

            AS "Y2011"

    FROM (SELECT   reg_yy

                  ,MAX (c1_cnt) AS c1_cnt

                  ,MAX (c2_cnt) AS c2_cnt

                  ,MAX (c3_cnt) AS c3_cnt

                  ,MAX (c1_sum) AS c1_sum

                  ,MAX (c2_sum) AS c2_sum

                  ,MAX (c3_sum) AS c3_sum

                  ,MAX (c1_sum / c1_per_sum) * 100 AS c1_per_sum

                  ,MAX (c2_sum / c2_per_sum) * 100 AS c2_per_sum

                  ,MAX (c3_sum / c3_per_sum) * 100 AS c3_per_sum

              FROM (SELECT reg_yy

                          ,c1

                          ,c2

                          ,c3

                          -- cnt

                          ,COUNT (c1) OVER (ORDER BY reg_dd) c1_cnt

                          ,COUNT (c2) OVER (ORDER BY reg_dd) c2_cnt

                          ,COUNT (c3) OVER (ORDER BY reg_dd) c3_cnt

                          -- sum

                          ,SUM (c1) OVER (ORDER BY reg_dd) c1_sum

                          ,SUM (c2) OVER (ORDER BY reg_dd) c2_sum

                          ,SUM (c3) OVER (ORDER BY reg_dd) c3_sum

                          -- all_sum

                          ,SUM (c1) OVER () c1_per_sum

                          ,SUM (c2) OVER () c2_per_sum

                          ,SUM (c3) OVER () c3_per_sum

                      FROM (SELECT (CASE WHEN reg_dd <= '200212' THEN '2002' ELSE SUBSTR (reg_dd, 1, 4) END) reg_yy

                                  ,reg_dd

                                  , (CASE WHEN a BETWEEN 0 AND 200 THEN a END) c1 -- '0~200'

                                  , (CASE WHEN a BETWEEN 201 AND 400 THEN a END) c2 -- '201~400'

                                  , (CASE WHEN a BETWEEN 401 AND 600 THEN a END) c3 -- '401~600'

                              FROM temp))

          GROUP BY reg_yy)

        ,(SELECT     LEVEL no

                FROM DUAL

          CONNECT BY LEVEL <= 9)

GROUP BY no

 

[Top]
No.
제목
작성자
작성일
조회
39028구분자관련 [1]
박진서
2011-11-01
4620
39027오라클과 PHP 연동 작업
최민석
2011-11-01
4148
39026엑셀에서 DB로... 케릭터셋질문입니다. [3]
....
2011-11-01
6169
39025낮에 질문 올리신 분 계신 것 같은데... 글이 삭제 되버린 것 같네요. 원하시는게 아래 쿼리 맞는지 모르겠습니다.
아무거나
2011-10-31
4733
39024Oracle "_B_TREE_BITMAP_PLANS" 파라메터 설정방법 [2]
Yoda
2011-10-31
4996
39022GROUP BY 관련해서.. [2]
카라
2011-10-31
4579
39021sql 질문드립니다. [5]
초보
2011-10-30
4025
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다