swkim vor 4 Jahren
Ursprung
Commit
bca6ee3569
2 geänderte Dateien mit 249 neuen und 8 gelöschten Zeilen
  1. BIN
      산출물/3.설계/ERD/ST24.exerd
  2. 249 8
      산출물/4.구축/통계/프로모션통계.sql

BIN
산출물/3.설계/ERD/ST24.exerd


+ 249 - 8
산출물/4.구축/통계/프로모션통계.sql

@@ -24,7 +24,6 @@ WITH TAB AS (
         AND A.CUST_NO = D.CUST_NO
         AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
         AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
-        AND B.ORD_EXCH_GB = 'O'
         AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
         AND B.ORD_QTY > B.CNCL_RTN_QTY
 )
@@ -38,6 +37,8 @@ WITH TAB AS (
     WHERE A.CPN_ID = B.CPN_ID
         AND B.CUST_CPN_SQ = C.CPN1_CPN_SQ
         AND A.CPN_TYPE = 'G230_10'-- 즉시할인쿠폰
+        AND C.CPN1_DC_AMT > 0
+    -- 쿠폰번호조건 (CPN_ID)
     GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
     UNION ALL
     SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
@@ -49,6 +50,8 @@ WITH TAB AS (
     WHERE A.CPN_ID = B.CPN_ID
         AND B.CUST_CPN_SQ = C.GOODS_CPN_SQ
         AND A.CPN_TYPE = 'G230_11'-- 상품쿠푼
+        AND C.GOODS_CPN_DC_AMT > 0
+    -- 쿠폰번호조건 (CPN_ID)
     GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
     UNION ALL
     SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
@@ -60,6 +63,8 @@ WITH TAB AS (
     WHERE A.CPN_ID = B.CPN_ID
         AND B.CUST_CPN_SQ = C.CART_CPN_SQ
         AND A.CPN_TYPE = 'G230_20'-- 장바구니쿠푼
+        AND C.CART_CPN_DC_AMT > 0
+    -- 쿠폰번호조건 (CPN_ID)
     GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
     UNION ALL
     SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
@@ -74,6 +79,7 @@ WITH TAB AS (
         AND B.CUST_CPN_SQ = D.DELV_CPN_SQ
         AND A.CPN_TYPE = 'G230_30'-- 배송비쿠푼
         AND D.DELV_CPN_DC_AMT > 0
+    -- 쿠폰번호조건 (CPN_ID)
     GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
 )
 SELECT CPN_TYPE -- 쿠폰타입
@@ -97,6 +103,7 @@ FROM (
         , ORD_AMT -- 주문금액
         , CPN_AMT -- 쿠폰비용
     FROM TAB_CPN_STAT A
+    -- 쿠폰타입조건 (G230_10	즉시할인쿠폰, G230_11	상품쿠폰, G230_20	주문서쿠폰,  G230_30	배송비쿠폰
 ) A
 ;
 
@@ -105,6 +112,7 @@ FROM (
 SELECT Z.BRAND_CD
     , Z.BRAND_ENM
     , Z.GOODS_CD
+    , Z.GOODS_NM
     , Z.ORD_AMT
     , Z.ORD_QTY
     , Z.CUST_CNT
@@ -115,6 +123,7 @@ FROM (
         A.BRAND_CD
         , B.BRAND_ENM
         , A.GOODS_CD
+        , A.GOODS_NM
         , SUM(ORD_AMT) AS ORD_AMT
         , SUM(ORD_QTY) AS ORD_QTY
         , SUM(CUST_CNT) AS CUST_CNT
@@ -122,6 +131,7 @@ FROM (
          SELECT
             C.BRAND_CD
             , C.GOODS_CD
+            , C.GOODS_NM
             , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
             , SUM(B.ORD_QTY - B.CNCL_RTN_QTY) AS ORD_QTY
             , COUNT(1) OVER(PARTITION BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO) AS CUST_CNT
@@ -131,10 +141,9 @@ FROM (
         AND A.CUST_NO = D.CUST_NO
         AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
         AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
-        AND B.ORD_EXCH_GB = 'O'
         AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
         AND B.ORD_QTY > B.CNCL_RTN_QTY
-        GROUP BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO
+        GROUP BY C.BRAND_CD, C.GOODS_CD, C.GOODS_NM, A.CUST_NO
     ) A, TB_BRAND B
     WHERE A.BRAND_CD = B.BRAND_CD
     GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
@@ -162,14 +171,13 @@ FROM (
             AND A.CUST_NO = D.CUST_NO
             AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
             AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
-            AND B.ORD_EXCH_GB = 'O'
             AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
             AND B.ORD_QTY > B.CNCL_RTN_QTY
             AND EXISTS(
                 SELECT 1
                 FROM TB_COUPON X, TB_CUST_COUPON Y
                 WHERE X.CPN_ID = Y.CPN_ID
-                    AND Y.CUST_CPN_SQ = B.GOODS_CPN_SQ -- B.CPN1_CPN_SQ, B.CART_CPN_SQ
+                    AND Y.CUST_CPN_SQ = B.GOODS_CPN_SQ -- B.CPN1_CPN_SQ, B.CART_CPN_SQ (쿠폰종류에따라 설정)
                     AND X.CPN_ID = 31045 -- 쿠폰번호변수
             )
             GROUP BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO
@@ -212,7 +220,6 @@ FROM (
         AND A.CUST_NO = D.CUST_NO
         AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
         AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
-        AND B.ORD_EXCH_GB = 'O'
         AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
         AND B.ORD_QTY > B.CNCL_RTN_QTY
         GROUP BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO
@@ -244,7 +251,6 @@ FROM (
             AND A.ORD_NO = E.ORD_NO
             AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
             AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
-            AND B.ORD_EXCH_GB = 'O'
             AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
             AND B.ORD_QTY > B.CNCL_RTN_QTY
             AND EXISTS(
@@ -263,4 +269,239 @@ FROM (
 ) X
 WHERE Z.BRAND_CD = X.BRAND_CD
     AND Z.GOODS_CD = X.GOODS_CD
-;
+;
+
+-- 프로모션통계 -> 다다익선통계
+WITH TAB AS (
+    SELECT A.ORD_NO
+         , B.ORD_DTL_NO
+         , B.ORD_QTY
+         , B.CNCL_RTN_QTY
+         , B.ORD_AMT
+         , B.CURR_PRICE
+         , B.CNCL_RTN_AMT
+         , B.ORD_DTL_STAT
+         , A.PAY_DT
+         , C.GOODS_CD
+         , B.TMTB1_SQ
+         , B.TMTB1_DC_AMT
+         , B.TMTB2_SQ
+         , B.TMTB2_DC_AMT
+    FROM TB_ORDER A,
+         TB_ORDER_DETAIL B,
+         TB_GOODS C,
+         TB_CUSTOMER D
+    WHERE A.ORD_NO = B.ORD_NO
+      AND B.GOODS_CD = C.GOODS_CD
+      AND A.CUST_NO = D.CUST_NO
+      AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
+      AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
+      AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98')               -- 주문접수,입금대기,입금전취소 제외
+      AND B.ORD_QTY > B.CNCL_RTN_QTY
+      -- 프로모션유형 선택값 없을때
+      AND (B.TMTB1_DC_AMT + B.TMTB2_DC_AMT) > 0
+    -- 수량할인
+    /*AND TMTB1_DC_AMT > 0
+        -- 금액할인
+        AND TMTB2_DC_AMT > 0
+        -- 수량+금액 할인
+        AND TMTB1_DC_AMT > 0
+        AND TMTB2_DC_AMT > 0*/
+    -- 프로모션 번호 (TMTB1_SQ OR TMTB2_SQ)
+)
+-- 수량할인
+, TMTB1 AS (
+    SELECT
+        TMTB_SQ
+        , TMTB_NM
+        , FN_GET_CODE_NM('G810', APPLY_GB) AS APPLY_GB
+        , SUM(ORD_CNT) AS ORD_CNT
+        , SUM(ORD_AMT) AS ORD_AMT
+        , SUM(DC_AMT) AS DC_AMT
+    FROM
+    (
+        SELECT A.TMTB_SQ
+            , A.TMTB_NM
+            , APPLY_GB
+            , COUNT(1) AS ORD_CNT
+            , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
+            , SUM(B.TMTB1_DC_AMT) AS DC_AMT
+        FROM TB_TMTB A, TAB B
+        WHERE A.TMTB_SQ = B.TMTB1_SQ
+        GROUP BY A.TMTB_SQ, A.TMTB_NM, A.APPLY_GB, B.ORD_NO
+    ) X
+    GROUP BY TMTB_SQ, TMTB_NM, APPLY_GB
+)
+-- 금액할인
+, TMTB2 AS (
+    SELECT
+        TMTB_SQ
+        , TMTB_NM
+        , FN_GET_CODE_NM('G810', APPLY_GB) AS APPLY_GB
+        , SUM(ORD_CNT) AS ORD_CNT
+        , SUM(ORD_AMT) AS ORD_AMT
+        , SUM(DC_AMT) AS DC_AMT
+    FROM
+    (
+        SELECT A.TMTB_SQ
+            , A.TMTB_NM
+            , APPLY_GB
+            , COUNT(1) AS ORD_CNT
+            , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
+            , SUM(B.TMTB1_DC_AMT) AS DC_AMT
+        FROM TB_TMTB A, TAB B
+        WHERE A.TMTB_SQ = B.TMTB2_SQ
+        GROUP BY A.TMTB_SQ, A.TMTB_NM, A.APPLY_GB, B.ORD_NO
+    ) X
+    GROUP BY TMTB_SQ, TMTB_NM, APPLY_GB
+)
+SELECT *
+FROM TMTB1
+UNION ALL
+SELECT *
+FROM TMTB2
+;
+
+-- 프로모션통계 -> 다다익선통계 -> 상품현황
+SELECT
+    A.BRAND_CD
+    , B.BRAND_ENM
+    , A.GOODS_CD
+    , A.GOODS_NM
+    , SUM(ORD_AMT) AS ORD_AMT
+    , SUM(ORD_QTY) AS ORD_QTY
+    , SUM(CUST_CNT) AS CUST_CNT
+FROM (
+     SELECT
+        C.BRAND_CD
+        , C.GOODS_CD
+        , C.GOODS_NM
+        , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
+        , SUM(B.ORD_QTY - B.CNCL_RTN_QTY) AS ORD_QTY
+        , COUNT(1) OVER(PARTITION BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO) AS CUST_CNT
+    FROM TB_ORDER A, TB_ORDER_DETAIL B, TB_GOODS C, TB_CUSTOMER D
+    WHERE A.ORD_NO = B.ORD_NO
+    AND B.GOODS_CD = C.GOODS_CD
+    AND A.CUST_NO = D.CUST_NO
+    AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
+    AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
+    AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
+    AND B.ORD_QTY > B.CNCL_RTN_QTY
+    -- 수량
+    -- AND B.TMTB1_SQ = 14
+    -- 금액
+    AND B.TMTB2_SQ = 33
+    GROUP BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO
+) A, TB_BRAND B
+WHERE A.BRAND_CD = B.BRAND_CD
+GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
+;
+
+-- 프로모션통계 -> 기획전통계
+SELECT
+    CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN '입점' ELSE '위탁' END AS DISTRIBUTION_GB
+    , BRAND_ENM
+    , PLAN_SQ
+    , (SELECT PLAN_NM FROM TB_PLAN P WHERE P.PLAN_SQ = X.PLAN_SQ) AS PLAN_NM
+    , SUM(ORD_AMT) AS ORD_AMT
+    , SUM(ORD_CNT) AS ORD_CNT
+FROM (
+    SELECT C.DISTRIBUTION_GB
+         , F.BRAND_ENM
+         , E.PLAN_SQ
+         , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
+         , COUNT(1) AS ORD_CNT
+    FROM TB_ORDER A,
+         TB_ORDER_DETAIL B,
+         TB_GOODS C,
+         TB_CUSTOMER D,
+         TB_PLAN_DETAIL E,
+         TB_BRAND F
+    WHERE A.ORD_NO = B.ORD_NO
+      AND B.GOODS_CD = C.GOODS_CD
+      AND A.CUST_NO = D.CUST_NO
+      AND B.PLAN_DTL_SQ = E.PLAN_DTL_SQ
+      AND F.BRAND_CD = C.BRAND_CD
+      AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
+      AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
+      AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98')               -- 주문접수,입금대기,입금전취소 제외
+      AND B.ORD_QTY > B.CNCL_RTN_QTY
+      -- 위탁
+      -- AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12')
+      -- 입점
+      -- AND C.DISTRIBUTION_GB = 'G065_20'
+      -- AND E.PLAN_SQ = 기획전번호
+    GROUP BY C.DISTRIBUTION_GB, F.BRAND_ENM, E.PLAN_SQ, A.ORD_NO
+) X
+GROUP BY DISTRIBUTION_GB, BRAND_ENM, PLAN_SQ
+;
+
+-- 프로모션통계 -> 기획전통계 -> 상품구매현황
+WITH TAB AS (
+    SELECT SUM(CUST_CNT) AS TOT_CUST_CNT
+    FROM (
+        SELECT COUNT(1) AS CUST_CNT
+        FROM TB_ORDER A,
+             TB_ORDER_DETAIL B,
+             TB_GOODS C,
+             TB_CUSTOMER D,
+             TB_PLAN_DETAIL E,
+             TB_BRAND F
+        WHERE A.ORD_NO = B.ORD_NO
+          AND B.GOODS_CD = C.GOODS_CD
+          AND A.CUST_NO = D.CUST_NO
+          AND B.PLAN_DTL_SQ = E.PLAN_DTL_SQ
+          AND F.BRAND_CD = C.BRAND_CD
+          AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
+          AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
+          AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98')               -- 주문접수,입금대기,입금전취소 제외
+          AND B.ORD_QTY > B.CNCL_RTN_QTY
+          -- AND E.PLAN_SQ = 기획전번호
+        GROUP BY A.CUST_NO
+    ) Z
+)
+SELECT
+    CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN '입점' ELSE '위탁' END AS DISTRIBUTION_GB
+    , GOODS_CD
+    , GOODS_NM
+    , SUM(ORD_AMT) AS ORD_AMT
+    , SUM(ORD_QTY) AS ORD_QTY
+    , SUM(CUST_CNT) AS CUST_CNT
+    , FLOOR((SUM(CUST_CNT) / (SELECT TOT_CUST_CNT FROM TAB) * 100) / 10) * 10 AS ORD_RATE
+FROM (
+     SELECT C.DISTRIBUTION_GB
+         , C.GOODS_CD
+         , C.GOODS_NM
+         , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
+         , SUM(B.ORD_QTY - B.CNCL_RTN_QTY) AS ORD_QTY
+         , COUNT(1) OVER(PARTITION BY C.DISTRIBUTION_GB, C.GOODS_CD, A.CUST_NO) AS CUST_CNT
+    FROM TB_ORDER A,
+         TB_ORDER_DETAIL B,
+         TB_GOODS C,
+         TB_CUSTOMER D,
+         TB_PLAN_DETAIL E,
+         TB_BRAND F
+    WHERE A.ORD_NO = B.ORD_NO
+      AND B.GOODS_CD = C.GOODS_CD
+      AND A.CUST_NO = D.CUST_NO
+      AND B.PLAN_DTL_SQ = E.PLAN_DTL_SQ
+      AND F.BRAND_CD = C.BRAND_CD
+      AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d')                         -- 시작일변수
+      AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
+      AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98')               -- 주문접수,입금대기,입금전취소 제외
+      AND B.ORD_QTY > B.CNCL_RTN_QTY
+      -- AND E.PLAN_SQ = 기획전번호
+    GROUP BY C.DISTRIBUTION_GB, C.GOODS_CD, C.GOODS_NM, A.CUST_NO
+) X
+GROUP BY DISTRIBUTION_GB, GOODS_CD, GOODS_NM
+;
+
+-- 소원씨 기획전 상세 페이지에서 planDtlSq 파라메터 추가 요청
+
+SELECT * FROM TB_COMMON_CODE WHERE CD_GB = 'G065';
+SELECT * FROM TB_TMTB;
+SELECT * FROM TB_TMTB_BURDEN;
+SELECT * FROM TB_ORDER_DETAIL WHERE PLAN_DTL_SQ > 0;
+SELECT * FROM TB_CART WHERE PLAN_DTL_SQ > 0;
+SELECT * FROM TB_CART_HST WHERE PLAN_DTL_SQ > 0;
+SELECT * FROM TB_GOODS;