|
|
@@ -0,0 +1,266 @@
|
|
|
+
|
|
|
+-- 프로모션통계 -> 쿠폰사용통계
|
|
|
+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
|
|
|
+ , CPN1_DC_AMT
|
|
|
+ , CPN1_CPN_SQ
|
|
|
+ , GOODS_CPN_DC_AMT
|
|
|
+ , GOODS_CPN_SQ
|
|
|
+ , CART_CPN_DC_AMT
|
|
|
+ , CART_CPN_SQ
|
|
|
+ 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_EXCH_GB = 'O'
|
|
|
+ AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
|
|
|
+ AND B.ORD_QTY > B.CNCL_RTN_QTY
|
|
|
+)
|
|
|
+, TAB_CPN_STAT AS (
|
|
|
+ SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
|
|
|
+ , 100 - IFNULL((SELECT MAX(BURDEN_RATE) FROM TB_COUPON_BURDEN X WHERE X.CPN_ID = A.CPN_ID), 0) AS BURDEN
|
|
|
+ , COUNT(1) AS USE_CNT
|
|
|
+ , SUM((C.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = C.ORD_DTL_NO)) * (C.ORD_QTY - C.CNCL_RTN_QTY)) AS ORD_AMT
|
|
|
+ , SUM(C.CPN1_DC_AMT) AS CPN_AMT
|
|
|
+ FROM TB_COUPON A, TB_CUST_COUPON B, TAB C
|
|
|
+ WHERE A.CPN_ID = B.CPN_ID
|
|
|
+ AND B.CUST_CPN_SQ = C.CPN1_CPN_SQ
|
|
|
+ AND A.CPN_TYPE = 'G230_10'-- 즉시할인쿠폰
|
|
|
+ GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
|
|
|
+ UNION ALL
|
|
|
+ SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
|
|
|
+ , 100 - IFNULL((SELECT MAX(BURDEN_RATE) FROM TB_COUPON_BURDEN X WHERE X.CPN_ID = A.CPN_ID), 0) AS BURDEN
|
|
|
+ , COUNT(1) AS USE_CNT
|
|
|
+ , SUM((C.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = C.ORD_DTL_NO)) * (C.ORD_QTY - C.CNCL_RTN_QTY)) AS ORD_AMT
|
|
|
+ , SUM(C.GOODS_CPN_DC_AMT) AS CPN_AMT
|
|
|
+ FROM TB_COUPON A, TB_CUST_COUPON B, TAB C
|
|
|
+ WHERE A.CPN_ID = B.CPN_ID
|
|
|
+ AND B.CUST_CPN_SQ = C.GOODS_CPN_SQ
|
|
|
+ AND A.CPN_TYPE = 'G230_11'-- 상품쿠푼
|
|
|
+ GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
|
|
|
+ UNION ALL
|
|
|
+ SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
|
|
|
+ , 100 - IFNULL((SELECT MAX(BURDEN_RATE) FROM TB_COUPON_BURDEN X WHERE X.CPN_ID = A.CPN_ID), 0) AS BURDEN
|
|
|
+ , COUNT(1) AS USE_CNT
|
|
|
+ , SUM((C.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = C.ORD_DTL_NO)) * (C.ORD_QTY - C.CNCL_RTN_QTY)) AS ORD_AMT
|
|
|
+ , SUM(C.CART_CPN_DC_AMT) AS CPN_AMT
|
|
|
+ FROM TB_COUPON A, TB_CUST_COUPON B, TAB C
|
|
|
+ WHERE A.CPN_ID = B.CPN_ID
|
|
|
+ AND B.CUST_CPN_SQ = C.CART_CPN_SQ
|
|
|
+ AND A.CPN_TYPE = 'G230_20'-- 장바구니쿠푼
|
|
|
+ GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
|
|
|
+ UNION ALL
|
|
|
+ SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
|
|
|
+ , 100 - IFNULL((SELECT MAX(BURDEN_RATE) FROM TB_COUPON_BURDEN X WHERE X.CPN_ID = A.CPN_ID), 0) AS BURDEN
|
|
|
+ , COUNT(1) AS USE_CNT
|
|
|
+ , SUM((C.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = C.ORD_DTL_NO)) * (C.ORD_QTY - C.CNCL_RTN_QTY)) AS ORD_AMT
|
|
|
+ , SUM(D.DELV_CPN_DC_AMT) AS CPN_AMT
|
|
|
+ FROM TB_COUPON A, TB_CUST_COUPON B, TAB C, TB_DELIVERY_FEE D
|
|
|
+ WHERE A.CPN_ID = B.CPN_ID
|
|
|
+ AND B.CUST_CPN_SQ = C.CART_CPN_SQ
|
|
|
+ AND C.ORD_NO = D.ORD_NO
|
|
|
+ AND B.CUST_CPN_SQ = D.DELV_CPN_SQ
|
|
|
+ AND A.CPN_TYPE = 'G230_30'-- 배송비쿠푼
|
|
|
+ AND D.DELV_CPN_DC_AMT > 0
|
|
|
+ GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
|
|
|
+)
|
|
|
+SELECT CPN_TYPE -- 쿠폰타입
|
|
|
+ , FN_GET_CODE_NM('G230', CPN_TYPE) AS CPN_TYPE_NM -- 쿠폰타입명
|
|
|
+ , CPN_ID -- 쿠폰번호
|
|
|
+ , CPN_NM -- 쿠폰명
|
|
|
+ , BURDEN -- 자사분담율
|
|
|
+ , DOWN_CNT
|
|
|
+ , FLOOR(USE_CNT / DOWN_CNT * 100 * 10) / 10 AS USE_RATE -- 사용율
|
|
|
+ , USE_CNT -- 사용수
|
|
|
+ , ORD_AMT -- 주문금액
|
|
|
+ , CPN_AMT -- 쿠폰비용
|
|
|
+FROM (
|
|
|
+ SELECT CPN_TYPE -- 쿠폰타입
|
|
|
+ , FN_GET_CODE_NM('G230', CPN_TYPE) AS CPN_TYPE_NM -- 쿠폰타입명
|
|
|
+ , CPN_ID -- 쿠폰번호
|
|
|
+ , CPN_NM -- 쿠폰명
|
|
|
+ , BURDEN -- 자사분담율
|
|
|
+ , (SELECT COUNT(1) FROM TB_CUST_COUPON X WHERE X.CPN_ID = A.CPN_ID) AS DOWN_CNT
|
|
|
+ , USE_CNT -- 사용수
|
|
|
+ , ORD_AMT -- 주문금액
|
|
|
+ , CPN_AMT -- 쿠폰비용
|
|
|
+ FROM TAB_CPN_STAT A
|
|
|
+) A
|
|
|
+;
|
|
|
+
|
|
|
+-- 프로모션통계 -> 쿠폰사용통계 -> 상품현황
|
|
|
+-- 즉시, 상품, 장바구니 쿠폰
|
|
|
+SELECT Z.BRAND_CD
|
|
|
+ , Z.BRAND_ENM
|
|
|
+ , Z.GOODS_CD
|
|
|
+ , Z.ORD_AMT
|
|
|
+ , Z.ORD_QTY
|
|
|
+ , Z.CUST_CNT
|
|
|
+ , X.CUST_CPN_CNT
|
|
|
+ , FLOOR((X.CUST_CPN_CNT / Z.CUST_CNT * 100) / 10) * 10 AS ORD_RATE
|
|
|
+FROM (
|
|
|
+ SELECT
|
|
|
+ A.BRAND_CD
|
|
|
+ , B.BRAND_ENM
|
|
|
+ , A.GOODS_CD
|
|
|
+ , 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
|
|
|
+ , 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_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
|
|
|
+ ) A, TB_BRAND B
|
|
|
+ WHERE A.BRAND_CD = B.BRAND_CD
|
|
|
+ GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
|
|
|
+) Z
|
|
|
+, (
|
|
|
+ SELECT
|
|
|
+ X.BRAND_CD
|
|
|
+ , X.BRAND_ENM
|
|
|
+ , X.GOODS_CD
|
|
|
+ , X.CUST_CPN_CNT
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ A.BRAND_CD
|
|
|
+ , B.BRAND_ENM
|
|
|
+ , A.GOODS_CD
|
|
|
+ , SUM(A.CUST_CPN_CNT) AS CUST_CPN_CNT
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ C.BRAND_CD
|
|
|
+ , C.GOODS_CD
|
|
|
+ , COUNT(1) OVER(PARTITION BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO) AS CUST_CPN_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_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 X.CPN_ID = 31045 -- 쿠폰번호변수
|
|
|
+ )
|
|
|
+ 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
|
|
|
+ ) X
|
|
|
+) X
|
|
|
+WHERE Z.BRAND_CD = X.BRAND_CD
|
|
|
+ AND Z.GOODS_CD = X.GOODS_CD
|
|
|
+;
|
|
|
+
|
|
|
+-- 배송비 쿠폰
|
|
|
+SELECT Z.BRAND_CD
|
|
|
+ , Z.BRAND_ENM
|
|
|
+ , Z.GOODS_CD
|
|
|
+ , Z.ORD_AMT
|
|
|
+ , Z.ORD_QTY
|
|
|
+ , Z.CUST_CNT
|
|
|
+ , X.CUST_CPN_CNT
|
|
|
+ , FLOOR((X.CUST_CPN_CNT / Z.CUST_CNT * 100) / 10) * 10 AS ORD_RATE
|
|
|
+FROM (
|
|
|
+ SELECT
|
|
|
+ A.BRAND_CD
|
|
|
+ , B.BRAND_ENM
|
|
|
+ , A.GOODS_CD
|
|
|
+ , 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
|
|
|
+ , 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_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
|
|
|
+ ) A, TB_BRAND B
|
|
|
+ WHERE A.BRAND_CD = B.BRAND_CD
|
|
|
+ GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
|
|
|
+) Z
|
|
|
+, (
|
|
|
+ SELECT
|
|
|
+ X.BRAND_CD
|
|
|
+ , X.BRAND_ENM
|
|
|
+ , X.GOODS_CD
|
|
|
+ , X.CUST_CPN_CNT
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ A.BRAND_CD
|
|
|
+ , B.BRAND_ENM
|
|
|
+ , A.GOODS_CD
|
|
|
+ , SUM(A.CUST_CPN_CNT) AS CUST_CPN_CNT
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ C.BRAND_CD
|
|
|
+ , C.GOODS_CD
|
|
|
+ , COUNT(1) OVER(PARTITION BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO) AS CUST_CPN_CNT
|
|
|
+ FROM TB_ORDER A, TB_ORDER_DETAIL B, TB_GOODS C, TB_CUSTOMER D, TB_DELIVERY_FEE E
|
|
|
+ WHERE A.ORD_NO = B.ORD_NO
|
|
|
+ AND B.GOODS_CD = C.GOODS_CD
|
|
|
+ AND A.CUST_NO = D.CUST_NO
|
|
|
+ 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(
|
|
|
+ SELECT 1
|
|
|
+ FROM TB_COUPON X, TB_CUST_COUPON Y
|
|
|
+ WHERE X.CPN_ID = Y.CPN_ID
|
|
|
+ AND Y.CUST_CPN_SQ = E.DELV_CPN_SQ
|
|
|
+ AND X.CPN_ID = 31045 -- 쿠폰번호변수
|
|
|
+ )
|
|
|
+ AND E.DELV_CPN_DC_AMT > 0
|
|
|
+ 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
|
|
|
+ ) X
|
|
|
+) X
|
|
|
+WHERE Z.BRAND_CD = X.BRAND_CD
|
|
|
+ AND Z.GOODS_CD = X.GOODS_CD
|
|
|
+;
|