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 39720 게시물 읽기
No. 39720
고수님들께 쿼리 질문 좀 드리고 싶습니다..
작성자
박정우(ppi1234)
작성일
2012-11-01 11:08
조회수
5,018

   SELECT *
            FROM (SELECT A.LAUNCH_DATE, A.REGION, A.COUNTRY, A.PRODUCT, B.PRODUCT_TYPE, B.BRAND, B.MODEL,
                               A.PRODUCT_CNT, B.MODEL_CNT,
                               ROUND((B.MODEL_CNT/A.PRODUCT_CNT)*100, 2) AS DIS_SHARE,
                               ROUND(B.USD_PRICE, 2) AS USD_PRICE,
                               ROUND(B.EU_PRICE, 2) AS EU_PRICE,
                               ROUND(B.LOCAL_PRICE, 2) AS LOCAL_PRICE
                  FROM (
                      SELECT LAUNCH_DATE, REGION, COUNTRY, PRODUCT, COUNT(*) AS PRODUCT_CNT
                                FROM TABLE_SAMPLE
                                WHERE  LAUNCH_DATE = '201209'
                                 AND REGION      = 'EUROPE'
                                 AND COUNTRY =  'GERMANY'
                                 AND PRODUCT =  'REFRIGERATOR'                           
                                GROUP BY LAUNCH_DATE, REGION, COUNTRY, PRODUCT) A,
                               (SELECT LAUNCH_DATE, REGION, COUNTRY, PRODUCT, MAX(PRODUCT_TYPE) PRODUCT_TYPE, BRAND, MODEL, COUNT(*) AS MODEL_CNT,
                                                 AVG(USD_TAG_PRICE)   AS USD_PRICE,
                                                 AVG(EU_TAG_PRICE)    AS EU_PRICE,
                                                 AVG(LOCAL_TAG_PRICE) AS LOCAL_PRICE
                                 FROM TABLE_SAMPLE
                                 WHERE  LAUNCH_DATE = '201209'
                                 AND REGION      = 'EUROPE'
                                 AND COUNTRY =  'GERMANY'
                                 AND PRODUCT =  'REFRIGERATOR'
                                 GROUP BY LAUNCH_DATE, REGION, COUNTRY, PRODUCT, BRAND, MODEL) B
                 WHERE A.LAUNCH_DATE = B.LAUNCH_DATE
                     AND A.REGION   = B.REGION
                     AND A.COUNTRY  = B.COUNTRY
                     AND A.PRODUCT  = B.PRODUCT) X,
              (SELECT A.LAUNCH_DATE, A.REGION, A.COUNTRY, A.PRODUCT, B.BRAND, B.MODEL,
                                A.BRAND_STORE_CNT, B.MODEL_STORE_CNT,
                                ROUND((B.MODEL_STORE_CNT/A.BRAND_STORE_CNT)*100, 2) AS DIST_RATE
                   FROM (SELECT LAUNCH_DATE, REGION, COUNTRY, PRODUCT,BRAND,
                                                   COUNT(STORE_ADDR) AS BRAND_STORE_CNT
                                     FROM TABLE_SAMPLE
                                 WHERE  LAUNCH_DATE = '201209'
                                 AND REGION      = 'EUROPE'
                                 AND COUNTRY =  'GERMANY'
                                 AND PRODUCT =  'REFRIGERATOR'                                    
                                 GROUP BY LAUNCH_DATE, REGION, COUNTRY, PRODUCT,BRAND) A,
                                (SELECT LAUNCH_DATE, REGION, COUNTRY, PRODUCT, BRAND, MODEL,
                                                  COUNT(STORE_ADDR) AS MODEL_STORE_CNT
                                     FROM TABLE_SAMPLE
                                 WHERE  LAUNCH_DATE = '201209'
                                 AND REGION      = 'EUROPE'
                                 AND COUNTRY =  'GERMANY'
                                 AND PRODUCT =  'REFRIGERATOR'
                                 GROUP BY LAUNCH_DATE, REGION, COUNTRY, PRODUCT, BRAND, MODEL) B
               WHERE A.LAUNCH_DATE = B.LAUNCH_DATE
                      AND A.REGION       = B.REGION
                      AND A.COUNTRY  = B.COUNTRY
                      AND A.PRODUCT  = B.PRODUCT
       AND A.BRAND    = B.BRAND) Y
        WHERE X.LAUNCH_DATE = Y.LAUNCH_DATE
              AND X.REGION       = Y.REGION
              AND X.COUNTRY  = Y.COUNTRY
              AND X.PRODUCT  = Y.PRODUCT
              AND X.BRAND        = Y.BRAND                   
     AND X.MODEL   = Y.MODEL      
        ORDER BY DECODE(X.BRAND, 'LG', '1', 'SAMSUNG', '2', X.BRAND)

 

다음과 같은 쿼리를 사용하고 있는데요, 음.. 파란색 부분은 결론적으로 중복되는 쿼리입니다. 한번만 사용해서 처리할 수도 있을거 같은데요..

제가 아직 초보라 좀 더 성능이나, 효율적인 부분에 대해 신경써서 만들 수 있는 수준이 아니라서요..

고수님들의 조언 좀 구하고자 합니다.

부탁드리겠습니다.

감사합니다. (- -) (_ _) 꾸벅

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

SELECT launch_date
     , region
     , country
     , product
     , brand
     , model
     , MAX(product_type) AS product_type
     , ROUND(AVG(usd_tag_price  ), 2) AS usd_price
     , ROUND(AVG(eu_tag_price   ), 2) AS eu_price
     , ROUND(AVG(local_tag_price), 2) AS local_price
     , COUNT(*) AS model_cnt
     , SUM(COUNT(*)) OVER(
       PARTITION BY launch_date, region, country, product
       ) AS product_cnt
     , ROUND(
       RATIO_TO_REPORT(COUNT(*)) OVER(
       PARTITION BY launch_date, region, country, product
       ) * 100, 2) AS dis_share
     , COUNT(store_addr) AS model_store_cnt
     , SUM(COUNT(store_addr)) OVER(
       PARTITION BY launch_date, region, country, product, brand
       ) AS brand_store_cnt
     , ROUND(
       RATIO_TO_REPORT(COUNT(store_addr)) OVER(
       PARTITION BY launch_date, region, country, product, brand
       ) * 100, 2) AS dist_rate
  FROM table_sample
 WHERE launch_date = '201209'
   AND region      = 'EUROPE'
   AND country     = 'GERMANY'
   AND product     = 'REFRIGERATOR'
 GROUP BY launch_date, region, country, product, brand, model
 ORDER BY DECODE(brand, 'LG', '1', 'SAMSUNG', '2', brand)
;

마농(manon94)님이 2012-11-02 11:19에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39723시간 계산 도와주세요.. [4]
이재훈
2012-11-02
5765
39722ORA-07445 오류 입니다.
약쟁이총각
2012-11-02
7983
39721outer join과 count 질문드립니다. [1]
^^
2012-11-01
5033
39720고수님들께 쿼리 질문 좀 드리고 싶습니다.. [1]
박정우
2012-11-01
5018
39719통계 문의 드립니다...
음..
2012-10-31
5041
39718날짜와 날짜 사이 구하는 쿼리 질문이요. [1]
오잉
2012-10-31
5477
39717소숫점 없애기 [1]
나재호
2012-10-31
4940
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다