채널(사무소,지국,지사,총판) 이 있고 채널 아래에 각 지역별로 부서가 있습니다.
그리고 그아래에 조직원이 있습니다.
실적 순위를 정하려고 하는데
먼저
한 채널 안에서 각 지역별 부서의 순위를 정하고 그 부서안에서 조직원에 대한 순위 (실적이 높은 순으로) 를 정하려고 합니다.
예)
지국 - 부천지국 - 총계 : 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;
|