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 38946 게시물 읽기
No. 38946
부서별 실적 순위 설정 어떻게 해야 하나요?
작성자
오종목(dhwhdahr)
작성일
2011-10-07 12:30
조회수
5,624

채널(사무소,지국,지사,총판) 이 있고 채널 아래에 각 지역별로 부서가 있습니다.

그리고 그아래에 조직원이 있습니다.

실적 순위를 정하려고 하는데

먼저

한 채널 안에서 각 지역별 부서의 순위를 정하고 그 부서안에서 조직원에 대한 순위 (실적이 높은 순으로) 를 정하려고 합니다.

예)

지국 - 부천지국 - 총계 : 390

지국 - 부천지국 - A조직원 : 100

지국 - 부천지국 - B조직원 : 90

지국 - 부천지국 - C조직원 : 80

지국 - 부천지국 - D조직원 : 70

지국 - 부천지국 - E조직원 : 50

지국 - 부산지국 - 총계 : 290

지국 - 부산지국 - A조직원 : 90

지국 - 부산지국 - B조직원 : 80

지국 - 부산지국 - C조직원 : 70

지국 - 부산지국 - D조직원 : 50

지국 - 김포지국 - 총계 : 200

지국 - 김포지국 - A조직원 : 100

지국 - 김포지국 - B조직원 : 50

지국 - 김포지국 - C조직원 : 30

지국 - 김포지국 - D조직원 : 20

                ~

                ~

 각지역별 부서 안에서 조직원에 대한 순위는 정했는데...

 

먼저 지역별 부서 순위 정하고 그안에서 조직원 순위 정하려는데

 쉽지 않네요. 도움 요청합니다.

 

===========================================================================================

SELECT
     Y.*
    ,TRUNC((Y.취소/Y.실적)*100, 1) 취소율

FROM
(
SELECT
  ORG_DIV
, FIN_ORG_DESC
, DECODE(GROUPING(X.SALE_MAN_ID),1,  '총계',X.SALE_MAN_ID) SALE_MAN_ID
, SUM(TOTCNT) AS 실적
, SUM(ORDERCNT) AS 주문
, SUM(CANCELCNT) AS 취소
 FROM
(
SELECT
      Z.ORG_DIV
    , Z.ORG_DESC  FIN_ORG_DESC
    , Z.SALE_MAN_ID
    , NVL(Z.COUNT1, 0) TOTCNT
    , NVL(Z.ORDERCNT, 0) ORDERCNT
    , NVL(Z.CANCELCNT, 0) CANCELCNT
FROM
(

SELECT AAA.* FROM
    (

        SELECT 
           A.CNTR_DIV
          ,A.ORDR_NO
          ,B.CUST_NM
          ,B.ENTP_NM
          ,B.RESID_NO
          ,C.ITEM_CD
         , SALE_MAN_ID
          ,ORG_DESC
          ,ORG_DIV
          ,TO_CHAR(TO_DATE(A.ORDR_DT), 'YYYY-MM-DD') ORDR_DT
          ,CASE 
            WHEN A.ORDR_STAT_DIV IN ('05', '10') THEN 1
           END CANCELCNT
          ,CASE 
            WHEN A.ORDR_STAT_DIV NOT IN ('05', '10') THEN 1
           END ORDERCNT
          , 1 AS COUNT1
        FROM SD_ORDR_INFO A
          ,SD_TMP_CUST_INFO B
          ,SD_ORDR_DETL C
          ,SD_CNTR_INFO D
          ,SD_AS_ACCTS_INFO F
          ,SD_EVENT_INFO G
        WHERE A.ORDR_NO = B.ORDR_NO
        AND A.ORDR_NO = C.ORDR_NO (+)
        AND A.ORDR_NO = D.ORDR_NO(+)
        AND C.AS_ACCTS_NO = F.AS_ACCTS_NO(+)
        AND A.EVNT_NO = G.EVNT_NO(+)
        AND A.ORDR_DT >= '20110901'
        AND A.ORDR_DT <= '20110930'
    ) AAA
) Z
) X
        GROUP BY ROLLUP(X.ORG_DIV, FIN_ORG_DESC, X.SALE_MAN_DESC)
    
) Y
ORDER BY ORG_DIV,FIN_ORG_DESC, 실적 DESC;

 

 

 

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

단순 카운트 구하는 쿼리인데
1. 인라인뷰 안에 너무 많은 테이블이 조인이 되네요?
카운트에 영향을 주지 않는 테이블들은 제외시키는게 좋을 듯 합니다.
2. 인라인뷰 안에서 너무 많은 컬럼들을 조회하네요.
최종 결과에 필요 없는 항목들은 빼세요.
3. 쓸데없이 서브쿼리가 깊어지는 경향이 있네요.

 ORDER BY SUM(실적) OVER(PARTITION BY ORG_DIV, FIN_ORG_DESC) DESC
        , ORG_DIV
        , FIN_ORG_DESC
        , 실적 DESC
;

마농(manon94)님이 2011-10-07 13:54에 작성한 댓글입니다.

감사합니다.

많은 참고가 되었습니다.

오종목(dhwhdahr)님이 2011-10-07 14:40에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38949오라클 10g EM (최상위 작업에서 SQL문 텍스트 풀쿼리 조회 방법) [2]
라클리
2011-10-10
4053
38948오라클9i에서 특정 문자들(다국어)들이 깨져서 들어갑니다. [1]
hym77
2011-10-10
4935
38947[권한 관련] 질문입니다. ㅠ.ㅠ [1]
김승욱
2011-10-09
4298
38946부서별 실적 순위 설정 어떻게 해야 하나요? [2]
오종목
2011-10-07
5624
38945파티션 테이블 truncate [1]
초보
2011-10-07
4487
38944토드 Export Data로 Insert SQL 파일 추출 관련 질문입니다. [1]
조동건
2011-10-07
9152
38943암호화 대상 컬럼의 크기는 얼마나 잡아야되나요? [2]
흰자
2011-10-06
4104
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다