|
|
@@ -1100,4 +1100,502 @@
|
|
|
<include refid="getBestOrderListSql"></include>
|
|
|
</select>
|
|
|
|
|
|
+ <!-- 쿠폰사용통계조회 -->
|
|
|
+ <select id="getCouponOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
+ /* TsaStatistics.getCouponOrderList */
|
|
|
+ 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
|
|
|
+ <![CDATA[
|
|
|
+ AND A.PAY_DT >= DATE_FORMAT(#{startDt}, '%Y%m%d') -- 시작일변수
|
|
|
+ AND A.PAY_DT <= DATE_FORMAT(CONCAT(#{endDt}, ' 23:59:59'), '%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
|
|
|
+ )
|
|
|
+ , 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'-- 즉시할인쿠폰
|
|
|
+ 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
|
|
|
+ , 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'-- 상품쿠푼
|
|
|
+ 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
|
|
|
+ , 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'-- 장바구니쿠푼
|
|
|
+ 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
|
|
|
+ , 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
|
|
|
+ -- 쿠폰번호조건 (CPN_ID)
|
|
|
+ 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
|
|
|
+ WHERE 1=1
|
|
|
+ <if test="multiCpnId != null">
|
|
|
+ /* 쿠폰번호 */
|
|
|
+ <foreach collection="multiCpnId" item="item" index="index" open="AND A.CPN_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="cpnTypeArr != null">
|
|
|
+ /* 쿠폰유형조건 (G230_10 즉시할인쿠폰, G230_11 상품쿠폰, G230_20 주문서쿠폰, G230_30 배송비쿠폰 */
|
|
|
+ <foreach collection="cpnTypeArr" item="item" index="index" open="AND A.CPN_TYPE IN (" close=")" separator=",">#{item}</foreach>
|
|
|
+ </if>
|
|
|
+ ) A
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 쿠폰사용통계상세조회 -->
|
|
|
+ <select id="getCouponOrderDetailList" parameterType="Statistics" resultType="Statistics">
|
|
|
+ /* TsaStatistics.getCouponOrderDetailList */
|
|
|
+ SELECT Z.BRAND_CD
|
|
|
+ , Z.BRAND_ENM
|
|
|
+ , Z.GOODS_CD
|
|
|
+ , Z.GOODS_NM
|
|
|
+ , 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
|
|
|
+ , 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
|
|
|
+ <![CDATA[
|
|
|
+ AND A.PAY_DT >= DATE_FORMAT(#{startDt}, '%Y-%m-%d') -- 시작일변수
|
|
|
+ AND A.PAY_DT <= DATE_FORMAT(CONCAT(#{endDt}, ' 23:59:59'), '%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
|
|
|
+ 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
|
|
|
+ ) 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
|
|
|
+ <![CDATA[
|
|
|
+ AND A.PAY_DT >= DATE_FORMAT(#{startDt}, '%Y-%m-%d') -- 시작일변수
|
|
|
+ AND A.PAY_DT <= DATE_FORMAT(CONCAT(#{endDt}, ' 23:59:59'), '%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 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 = #{cpnId} -- 쿠폰번호변수
|
|
|
+ )
|
|
|
+ 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>
|
|
|
+
|
|
|
+ <!-- 다다익선 주문 통계 조회 -->
|
|
|
+ <select id="getTmtbOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
+ /* TsaStatistics.getTmtbOrderList */
|
|
|
+ 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
|
|
|
+ <![CDATA[
|
|
|
+ AND A.PAY_DT >= DATE_FORMAT(#{startDt}, '%Y-%m-%d') -- 시작일변수
|
|
|
+ AND A.PAY_DT <= DATE_FORMAT(CONCAT(#{endDt}, ' 23:59:59'), '%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
|
|
|
+ <if test="applyGbArr == null">
|
|
|
+ /* 프로모션유형값없을시 */
|
|
|
+ AND (B.TMTB1_DC_AMT + B.TMTB2_DC_AMT) > 0
|
|
|
+ </if>
|
|
|
+ <if test="applyGbArr != null">
|
|
|
+ /* 프로모션유형 */
|
|
|
+ <foreach collection="applyGbArr" item="item" index="index">
|
|
|
+ <if test='item == "G810_10"'>
|
|
|
+ AND TMTB1_DC_AMT > 0 -- 수량
|
|
|
+ </if>
|
|
|
+ <if test='item == "G810_11"'>
|
|
|
+ AND TMTB2_DC_AMT > 0 -- 금액
|
|
|
+ </if>
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ )
|
|
|
+ -- 수량할인
|
|
|
+ , 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
|
|
|
+ <if test="applyGbArr != null">
|
|
|
+ /* 프로모션유형 */
|
|
|
+ <foreach collection="applyGbArr" item="item" index="index" open="AND A.APPLY_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
+ </if>
|
|
|
+ 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
|
|
|
+ WHERE 1=1
|
|
|
+ <if test="multiTmtbSq != null">
|
|
|
+ /* 프로모션번호 */
|
|
|
+ <foreach collection="multiTmtbSq" item="item" index="index" open="AND TMTB_SQ IN (" close=")" separator=",">#{item}</foreach>
|
|
|
+ </if>
|
|
|
+ UNION ALL
|
|
|
+ SELECT *
|
|
|
+ FROM TMTB2
|
|
|
+ WHERE 1=1
|
|
|
+ <if test="multiTmtbSq != null">
|
|
|
+ /* 프로모션번호 */
|
|
|
+ <foreach collection="multiTmtbSq" item="item" index="index" open="AND TMTB_SQ IN (" close=")" separator=",">#{item}</foreach>
|
|
|
+ </if>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 다다익선 주문 통계 상세조회 -->
|
|
|
+ <select id="getTmtbOrderDetailList" parameterType="Statistics" resultType="Statistics">
|
|
|
+ /* TsaStatistics.getTmtbOrderDetailList */
|
|
|
+ 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
|
|
|
+ <![CDATA[
|
|
|
+ AND A.PAY_DT >= DATE_FORMAT(#{startDt}, '%Y-%m-%d') -- 시작일변수
|
|
|
+ AND A.PAY_DT <= DATE_FORMAT(CONCAT(#{endDt}, ' 23:59:59'), '%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
|
|
|
+ <if test="applyGbArr != null">
|
|
|
+ /* 프로모션유형 */
|
|
|
+ <foreach collection="applyGbArr" item="item" index="index">
|
|
|
+ <if test='item == "G810_10"'>
|
|
|
+ AND B.TMTB1_SQ = #{tmtbSq} -- 수량
|
|
|
+ </if>
|
|
|
+ <if test='item == "G810_11"'>
|
|
|
+ AND B.TMTB2_SQ = #{tmtbSq} -- 금액
|
|
|
+ </if>
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ 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>
|
|
|
+
|
|
|
+ <!-- 사은품 주문조회 -->
|
|
|
+ <select id="getPlanOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
+ /* TsaStatistics.getPlanOrderList */
|
|
|
+ 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
|
|
|
+ <![CDATA[
|
|
|
+ AND A.PAY_DT >= DATE_FORMAT(#{startDt}, '%Y-%m-%d') -- 시작일변수
|
|
|
+ AND A.PAY_DT <= DATE_FORMAT(CONCAT(#{endDt}, ' 23:59:59'), '%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
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
+ /* 물류구분 */
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index">
|
|
|
+ <if test="item == 'SCM'">
|
|
|
+ AND C.DISTRIBUTION_GB = 'G065_20' -- 입점
|
|
|
+ </if>
|
|
|
+ <if test="item == 'WMS'">
|
|
|
+ AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12') -- 위탁
|
|
|
+ </if>
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ <if test="multiTmtbSq != null">
|
|
|
+ /* 기획전번호 */
|
|
|
+ <foreach collection="multiPlanSq" item="item" index="index" open="AND E.PLAN_SQ IN (" close=")" separator=",">#{item}</foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY C.DISTRIBUTION_GB, F.BRAND_ENM, E.PLAN_SQ, A.ORD_NO
|
|
|
+ ) X
|
|
|
+ GROUP BY DISTRIBUTION_GB, BRAND_ENM, PLAN_SQ
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 사은품 주문상세 조회 -->
|
|
|
+ <select id="getPlanOrderDetailList" parameterType="Statistics" resultType="Statistics">
|
|
|
+ /* TsaStatistics.getPlanOrderDetailList */
|
|
|
+ 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
|
|
|
+ <![CDATA[
|
|
|
+ AND A.PAY_DT >= DATE_FORMAT(#{startDt}, '%Y-%m-%d') -- 시작일변수
|
|
|
+ AND A.PAY_DT <= DATE_FORMAT(CONCAT(#{endDt}, ' 23:59:59'), '%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 = #{planSq}
|
|
|
+ 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
|
|
|
+ <![CDATA[
|
|
|
+ AND A.PAY_DT >= DATE_FORMAT(#{startDt}, '%Y-%m-%d') -- 시작일변수
|
|
|
+ AND A.PAY_DT <= DATE_FORMAT(CONCAT(#{endDt}, ' 23:59:59'), '%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
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
+ /* 물류구분 */
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index">
|
|
|
+ <if test="item == 'SCM'">
|
|
|
+ AND C.DISTRIBUTION_GB = 'G065_20' -- 입점
|
|
|
+ </if>
|
|
|
+ <if test="item == 'WMS'">
|
|
|
+ AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12') -- 위탁
|
|
|
+ </if>
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ AND E.PLAN_SQ = #{planSq}
|
|
|
+ GROUP BY C.DISTRIBUTION_GB, C.GOODS_CD, C.GOODS_NM, A.CUST_NO
|
|
|
+ ) X
|
|
|
+ GROUP BY DISTRIBUTION_GB, GOODS_CD, GOODS_NM
|
|
|
+ </select>
|
|
|
+
|
|
|
</mapper>
|