|
@@ -1,2713 +1,2713 @@
|
|
|
-<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
|
|
|
-<mapper namespace="com.style24.admin.biz.dao.TsaStatisticsDao">
|
|
|
|
|
-
|
|
|
|
|
- <!-- 일일거래내역 -->
|
|
|
|
|
- <select id="getDailyTradingList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getDailyTradingList */
|
|
|
|
|
- SELECT ODIH.ORD_NO /*주문번호*/
|
|
|
|
|
- , ODIH.ORD_DTL_NO /*주문상세번호*/
|
|
|
|
|
- , ODIH.SELL_GB /*판매구분*/
|
|
|
|
|
- , ODIH.MALL_GB /*몰구분*/
|
|
|
|
|
- , ODIH.MALL_GB_NM /*몰구분명*/
|
|
|
|
|
- , ODIH.EXTMALL_ORDER_ID /*제휴몰주문번호*/
|
|
|
|
|
- , ODIH.EXTMALL_ID /*제휴몰ID*/
|
|
|
|
|
- , ODIH.EXTMALL_NM /*제휴몰명*/
|
|
|
|
|
- , ODIH.AF_LINK_CD /*제휴링크코드*/
|
|
|
|
|
- , ODIH.AF_LINK_NM /*제휴링크명*/
|
|
|
|
|
- , ODIH.AF_CHANNEL /*제휴채널코드*/
|
|
|
|
|
- , ODIH.AF_CHANNEL_NM /*제휴채널명*/
|
|
|
|
|
- , ODIH.DISTRIBUTION_GB /*유통구분*/
|
|
|
|
|
- , ODIH.DISTRIBUTION_GB_NM /*유통구분명*/
|
|
|
|
|
- , ODIH.SUPPLY_COMP_CD /*공급업체코드*/
|
|
|
|
|
- , ODIH.SUPPLY_COMP_NM /*공급업체명*/
|
|
|
|
|
- , ODIH.SUPPLY_VENDOR_CD /*공급벤더코드*/
|
|
|
|
|
- , ODIH.SUPPLY_VENDOR_NM /*공급벤더명*/
|
|
|
|
|
- , ODIH.ORD_DT /*주문일시*/
|
|
|
|
|
- , ODIH.OCCUR_DT /*발생일시*/
|
|
|
|
|
- , ODIH.BRAND_CD /*브랜드코드*/
|
|
|
|
|
- , ODIH.BRAND_ENM /*브랜드명*/
|
|
|
|
|
- , ODIH.GOODS_CD /*상품코드*/
|
|
|
|
|
- , ODIH.GOODS_NM /*상품명*/
|
|
|
|
|
- , ODIH.ITEM_CD /*단품코드*/
|
|
|
|
|
- , ODIH.OPT_CD1 /*옵션코드1*/
|
|
|
|
|
- , ODIH.OPT_CD2 /*옵션코드2*/
|
|
|
|
|
- , ODIH.ITEMKIND_CD /*품목코드*/
|
|
|
|
|
- , ODIH.ITEMKIND_NM /*품목명*/
|
|
|
|
|
- , SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',1) AS ITEMKIND_NM1 /*품목명1*/
|
|
|
|
|
- , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',1),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',2),'>',-1) THEN
|
|
|
|
|
- NULL
|
|
|
|
|
- ELSE
|
|
|
|
|
- SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',2),'>',-1)
|
|
|
|
|
- END AS ITEMKIND_NM2 /*품목명2*/
|
|
|
|
|
- , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',2),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',3),'>',-1) THEN
|
|
|
|
|
- NULL
|
|
|
|
|
- ELSE
|
|
|
|
|
- SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',3),'>',-1)
|
|
|
|
|
- END AS ITEMKIND_NM3 /*품목명3*/
|
|
|
|
|
- , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',3),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',4),'>',-1) THEN
|
|
|
|
|
- ''
|
|
|
|
|
- ELSE
|
|
|
|
|
- SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',4),'>',-1)
|
|
|
|
|
- END AS ITEMKIND_NM4 /*품목명4*/
|
|
|
|
|
- , ODIH.MALL_PRICE /*몰판매가*/
|
|
|
|
|
- , ODIH.SELL_PRICE /*판매가*/
|
|
|
|
|
- , ODIH.SELL_QTY /*판매수량*/
|
|
|
|
|
- , ODIH.SELL_AMT /*판매금액(ORD_AMT에는 CPN1_DC_AMT가 빠진 금액이 들어가 있음)*/
|
|
|
|
|
- , ODIH.CPN1_DC_AMT /*즉시사용쿠폰금액*/
|
|
|
|
|
- , ODIH.GOODS_CPN_DC_AMT /*상품쿠폰사용금액*/
|
|
|
|
|
- , ODIH.CART_CPN_DC_AMT /*주문서쿠폰사용금액*/
|
|
|
|
|
- , ODIH.PNT_DC_AMT /*포인트사용금액*/
|
|
|
|
|
- , ODIH.TMTB_DC_AMT /*다다익선할인금액*/
|
|
|
|
|
- , ODIH.SELF_TMTB_DC_AMT /*자사다다익선분담액*/
|
|
|
|
|
- , ODIH.SUPPLY_COMP_TMTB_DC_AMT /*입점다다익선분담액*/
|
|
|
|
|
- , ODIH.GFCD_USE_AMT /*상품권사용금액*/
|
|
|
|
|
- , ODIH.SELF_CPN_DC_AMT /*자사쿠폰분담액*/
|
|
|
|
|
- , ODIH.SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
|
|
|
|
|
- , CASE WHEN ODIH.SELL_QTY = 0 THEN 0
|
|
|
|
|
- ELSE
|
|
|
|
|
- (ODIH.SELL_AMT
|
|
|
|
|
- - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT )
|
|
|
|
|
- - ODIH.TMTB_DC_AMT
|
|
|
|
|
- ) / ODIH.SELL_QTY
|
|
|
|
|
- END AS REAL_SELL_PRICE /*실판매가 /주문서쿠폰제외*/
|
|
|
|
|
- , ODIH.SELL_AMT
|
|
|
|
|
- - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT )
|
|
|
|
|
- - ODIH.TMTB_DC_AMT AS REAL_SELL_AMT /*실판매금액(=상품총액. 쿠폰과 다다익선만 차감. 상품권과 포인트는 포함) /주문서쿠폰제외*/
|
|
|
|
|
- , ODIH.SELL_FEE_RATE /*판매수수료율*/
|
|
|
|
|
- , ROUND(ODIH.SELL_AMT * (ODIH.SELL_FEE_RATE / 100),0) AS SELL_FEE_AMT /*수수료*/
|
|
|
|
|
- , ODIH.MD_NM /*담당MD*/
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT ODIH.ORD_DTL_ITEM_HST_SQ /*주문상세단품이력일련번호*/
|
|
|
|
|
- , ODIH.ORD_NO /*주문번호*/
|
|
|
|
|
- , ODIH.ORD_DTL_NO /*주문상세번호*/
|
|
|
|
|
- , CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN '판매'
|
|
|
|
|
- WHEN ODIH.ORD_DTL_STAT = 'G720_30' THEN '취소'
|
|
|
|
|
- WHEN ODIH.ORD_DTL_STAT = 'G720_40' THEN '품절취소'
|
|
|
|
|
- WHEN ODIH.ORD_DTL_STAT = 'G720_50' THEN '반품'
|
|
|
|
|
- WHEN ODIH.ORD_DTL_STAT = 'G720_60' THEN '교환'
|
|
|
|
|
- END AS SELL_GB /*판매구분*/
|
|
|
|
|
- , O.MALL_GB /*몰구분*/
|
|
|
|
|
- , FN_GET_CODE_NM('G011',O.MALL_GB) AS MALL_GB_NM /*몰구분명*/
|
|
|
|
|
- , OD.EXTMALL_ORDER_ID /*제휴몰주문번호*/
|
|
|
|
|
- , OD.EXTMALL_ID /*제휴몰ID*/
|
|
|
|
|
- , E.EXTMALL_NM /*제휴몰명*/
|
|
|
|
|
- , OD.AF_LINK_CD /*제휴링크코드*/
|
|
|
|
|
- , AL.AF_LINK_NM /*제휴링크명*/
|
|
|
|
|
- , AL.AF_CHANNEL /*제휴채널코드*/
|
|
|
|
|
- , FN_GET_CODE_NM('G053',AL.AF_CHANNEL) AS AF_CHANNEL_NM /*제휴채널명*/
|
|
|
|
|
- , SC.DISTRIBUTION_GB /*유통구분*/
|
|
|
|
|
- , FN_GET_CODE_NM('G065',SC.DISTRIBUTION_GB) AS DISTRIBUTION_GB_NM /*유통구분명*/
|
|
|
|
|
- , OD.SUPPLY_COMP_CD /*공급업체코드*/
|
|
|
|
|
- , SC.SUPPLY_COMP_NM /*공급업체명*/
|
|
|
|
|
- , SC.SUPPLY_VENDOR_CD /*공급벤더코드*/
|
|
|
|
|
- , SV.SUPPLY_VENDOR_NM /*공급벤더명*/
|
|
|
|
|
- , DATE_FORMAT(O.PAY_DT,'%Y-%m-%d %H:%i:%S') AS ORD_DT /*주문일시*/
|
|
|
|
|
- , DATE_FORMAT(ODIH.REG_DT,'%Y-%m-%d %H:%i:%S') AS OCCUR_DT /*발생일시*/
|
|
|
|
|
- , G.BRAND_CD /*브랜드코드*/
|
|
|
|
|
- , B.BRAND_ENM /*브랜드명*/
|
|
|
|
|
- , OD.GOODS_CD /*상품코드*/
|
|
|
|
|
- , G.GOODS_NM /*상품명*/
|
|
|
|
|
- , ODIH.ITEM_CD /*단품코드*/
|
|
|
|
|
- , ODIH.OPT_CD1 /*옵션코드1*/
|
|
|
|
|
- , ODIH.OPT_CD2 /*옵션코드2*/
|
|
|
|
|
- , G.ITEMKIND_CD /*품목코드*/
|
|
|
|
|
- , I.ITEMKIND_NM /*품목명*/
|
|
|
|
|
- , ODIH.ITEM_PRICE AS MALL_PRICE /*몰판매가*/
|
|
|
|
|
- , CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
|
|
|
|
|
- IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
|
|
|
|
|
- ELSE
|
|
|
|
|
- ODIH.ITEM_PRICE
|
|
|
|
|
- END AS SELL_PRICE /*판매가(제휴몰정산가적용)*/
|
|
|
|
|
- , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN 1 ELSE -1 END)
|
|
|
|
|
- *
|
|
|
|
|
- CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10'/*판매-결제완료*/ THEN
|
|
|
|
|
- ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY
|
|
|
|
|
- ELSE /*환입-반품완료,환입-교환완료*/
|
|
|
|
|
- ODIH.CNCL_RTN_QTY
|
|
|
|
|
- END AS SIGNED INT) AS SELL_QTY /*판매수량*/
|
|
|
|
|
- , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN 1 ELSE -1 END)
|
|
|
|
|
- *
|
|
|
|
|
- CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10'/*판매-결제완료*/ THEN
|
|
|
|
|
- ((ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY) * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
|
|
|
|
|
- IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
|
|
|
|
|
- ELSE
|
|
|
|
|
- ODIH.ITEM_PRICE
|
|
|
|
|
- END))
|
|
|
|
|
- ELSE /*환입-반품완료,환입-교환완료*/
|
|
|
|
|
- (ODIH.CNCL_RTN_QTY * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
|
|
|
|
|
- IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
|
|
|
|
|
- ELSE
|
|
|
|
|
- ODIH.ITEM_PRICE
|
|
|
|
|
- END))
|
|
|
|
|
- END AS SIGNED INT) AS SELL_AMT /*판매금액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.CPN1_DC_AMT AS CPN1_DC_AMT /*즉시사용쿠폰금액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * CASE WHEN CC2.CPN_ID=59 THEN 0 ELSE ODIH.GOODS_CPN_DC_AMT END AS GOODS_CPN_DC_AMT /*상품쿠폰사용금액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.CART_CPN_DC_AMT AS CART_CPN_DC_AMT /*주문서쿠폰사용금액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.PNT_DC_AMT AS PNT_DC_AMT /*포인트사용금액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * (ODIH.TMTB1_DC_AMT + ODIH.TMTB2_DC_AMT) AS TMTB_DC_AMT /*다다익선할인금액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
|
|
|
|
|
- (((100 - IFNULL(TB1.TMTB_BURDEN_RATE,0)) / 100) * ODIH.TMTB1_DC_AMT
|
|
|
|
|
- + ((100 - IFNULL(TB2.TMTB_BURDEN_RATE,0)) / 100) * ODIH.TMTB2_DC_AMT) AS SELF_TMTB_DC_AMT /*자사다다익선분담액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
|
|
|
|
|
- ((IFNULL(TB1.TMTB_BURDEN_RATE,0) / 100) * ODIH.TMTB1_DC_AMT
|
|
|
|
|
- + (IFNULL(TB2.TMTB_BURDEN_RATE,0) / 100) * ODIH.TMTB2_DC_AMT) AS SUPPLY_COMP_TMTB_DC_AMT /*입점다다익선분담액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.GFCD_USE_AMT AS GFCD_USE_AMT /*상품권사용금액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
|
|
|
|
|
- (((100 - IFNULL(CB1.BURDEN_RATE,0)) / 100) * ODIH.CPN1_DC_AMT
|
|
|
|
|
- + ((100 - IFNULL(CB2.BURDEN_RATE,0)) / 100) * CASE WHEN CC2.CPN_ID=59 THEN 0 ELSE ODIH.GOODS_CPN_DC_AMT END ) AS SELF_CPN_DC_AMT /*자사쿠폰분담액*/
|
|
|
|
|
- , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
|
|
|
|
|
- ((IFNULL(CB1.BURDEN_RATE,0) / 100) * ODIH.CPN1_DC_AMT
|
|
|
|
|
- + (IFNULL(CB2.BURDEN_RATE,0) / 100) * ODIH.GOODS_CPN_DC_AMT) AS SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
|
|
|
|
|
- , CASE WHEN O.MALL_GB = 'G011_10' /*자사몰*/ THEN
|
|
|
|
|
- OD.SELL_FEE_RATE
|
|
|
|
|
- ELSE /*제휴몰*/
|
|
|
|
|
- IFNULL(E.SELL_FEE_RATE,0)
|
|
|
|
|
- END AS SELL_FEE_RATE /*판매수수료율*/
|
|
|
|
|
- , (SELECT U.USER_NM
|
|
|
|
|
- FROM TB_BRAND_MD BM
|
|
|
|
|
- , TB_USER U
|
|
|
|
|
- WHERE BM.MD_NO = U.USER_NO
|
|
|
|
|
- AND BM.BRAND_CD = G.BRAND_CD
|
|
|
|
|
- AND BM.FORMAL_GB = G.FORMAL_GB
|
|
|
|
|
- LIMIT 1) AS MD_NM /*담당MD*/
|
|
|
|
|
- FROM TB_ORDER_DETAIL_ITEM_HST ODIH
|
|
|
|
|
- INNER JOIN TB_ORDER_DETAIL OD ON ODIH.ORD_DTL_NO = OD.ORD_DTL_NO
|
|
|
|
|
- INNER JOIN TB_ORDER O ON ODIH.ORD_NO = O.ORD_NO
|
|
|
|
|
- INNER JOIN TB_SUPPLY_COMPANY SC ON OD.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
|
|
|
|
|
- INNER JOIN TB_SUPPLY_VENDOR SV ON SC.SUPPLY_VENDOR_CD = SV.SUPPLY_VENDOR_CD
|
|
|
|
|
- INNER JOIN TB_GOODS G ON OD.GOODS_CD = G.GOODS_CD
|
|
|
|
|
- INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
|
|
|
|
|
- INNER JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
|
|
|
|
|
- LEFT OUTER JOIN TB_EXTMALL E ON OD.EXTMALL_ID = E.EXTMALL_ID
|
|
|
|
|
- LEFT OUTER JOIN TB_AF_LINK AL ON OD.AF_LINK_CD = AL.AF_LINK_CD
|
|
|
|
|
- LEFT OUTER JOIN TB_COUPON_BURDEN CB1 ON OD.CPN1_CPN_SQ = CB1.CPN_ID
|
|
|
|
|
- AND OD.SUPPLY_COMP_CD = CB1.SUPPLY_COMP_CD
|
|
|
|
|
- LEFT OUTER JOIN TB_CUST_COUPON CC2 ON OD.GOODS_CPN_SQ = CC2.CUST_CPN_SQ
|
|
|
|
|
- LEFT OUTER JOIN TB_COUPON_BURDEN CB2 ON CC2.CPN_ID = CB2.CPN_ID
|
|
|
|
|
- AND OD.SUPPLY_COMP_CD = CB2.SUPPLY_COMP_CD
|
|
|
|
|
- LEFT OUTER JOIN TB_CUST_COUPON CC3 ON OD.CART_CPN_SQ = CC3.CUST_CPN_SQ
|
|
|
|
|
- LEFT OUTER JOIN TB_COUPON_BURDEN CB3 ON CC3.CPN_ID = CB3.CPN_ID
|
|
|
|
|
- AND OD.SUPPLY_COMP_CD = CB3.SUPPLY_COMP_CD
|
|
|
|
|
- LEFT OUTER JOIN TB_TMTB_BURDEN TB1 ON OD.TMTB1_SQ = TB1.TMTB_SQ
|
|
|
|
|
- AND OD.SUPPLY_COMP_CD = TB1.TMTB_SUPPLY_CD
|
|
|
|
|
- LEFT OUTER JOIN TB_TMTB_BURDEN TB2 ON OD.TMTB2_SQ = TB2.TMTB_SQ
|
|
|
|
|
- AND OD.SUPPLY_COMP_CD = TB2.TMTB_SUPPLY_CD
|
|
|
|
|
- LEFT OUTER JOIN TB_EXTMALL_USAC_PRICE EUP ON ODIH.ORD_DTL_ITEM_HST_SQ = EUP.ORD_DTL_ITEM_HST_SQ
|
|
|
|
|
- WHERE 1 = 1
|
|
|
|
|
- AND ODIH.REG_DT <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND ODIH.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- AND ODIH.ORD_DTL_STAT IN ('G720_10','G720_30','G720_40','G720_50','G720_60') /*판매-결제완료,환입-취소완료,환입-품절취소,환입-반품완료,환입-교환완료*/
|
|
|
|
|
- ) ODIH
|
|
|
|
|
- ORDER BY ODIH.ORD_DTL_ITEM_HST_SQ
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 일자별주문 목록 -->
|
|
|
|
|
- <select id="getDailyOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getDailyOrderList */
|
|
|
|
|
- SELECT SUM(SOD.SELF_AMT + SOD.CHANNEL_AMT + SOD.EXTMALL_AMT) AS TOT_ORD_AMT /*매출액*/
|
|
|
|
|
- , IFNULL((SELECT SUM(SELF_AMT + CHANNEL_AMT + EXTMALL_AMT)
|
|
|
|
|
- FROM TB_STAT_ORD_DAY
|
|
|
|
|
- WHERE 1 = 1
|
|
|
|
|
- AND DAY <![CDATA[>=]]> DATE_ADD(STR_TO_DATE(#{startDt},'%Y-%m-%d'), INTERVAL -1 YEAR)
|
|
|
|
|
- AND DAY <![CDATA[<]]> DATE_ADD(DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR)
|
|
|
|
|
- AND (
|
|
|
|
|
- 1 = 1
|
|
|
|
|
- <if test='frontGbP != null and frontGbP != ""'>
|
|
|
|
|
- OR FRONT_GB = 'P'
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='frontGbM != null and frontGbM != ""'>
|
|
|
|
|
- OR FRONT_GB = 'M'
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='frontGbA != null and frontGbA != ""'>
|
|
|
|
|
- OR FRONT_GB = 'A'
|
|
|
|
|
- </if>
|
|
|
|
|
- )
|
|
|
|
|
- <if test='mallGb != null and mallGb != ""'>
|
|
|
|
|
- AND IFNULL(EXTMALL_ID,'') != '' /*제휴몰만*/
|
|
|
|
|
- <if test='multiExtmallId != null and multiExtmallId != ""'>
|
|
|
|
|
- AND EXTMALL_ID IN
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- </if>
|
|
|
|
|
- AND (
|
|
|
|
|
- 1 = 1
|
|
|
|
|
- <if test='distributionGbWms != null and distributionGbWms != ""'>
|
|
|
|
|
- OR DISTRIBUTION_GB = 'WMS'
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='distributionGbScm != null and distributionGbScm != ""'>
|
|
|
|
|
- OR DISTRIBUTION_GB = 'SCM'
|
|
|
|
|
- </if>
|
|
|
|
|
- )
|
|
|
|
|
- <if test='multiSupplyCompCd != null and multiSupplyCompCd != ""'>
|
|
|
|
|
- AND SUPPLY_COMP_CD IN
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='multiAfLinkCd != null and multiAfLinkCd != ""'>
|
|
|
|
|
- AND AF_LINK_CD IN
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='multiBrandCd != null and multiBrandCd != ""'>
|
|
|
|
|
- AND BRAND_CD IN
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='multiItemkindCd != null and multiItemkindCd != ""'>
|
|
|
|
|
- AND ITEMKIND_CD IN
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- ),0) AS YOY_TOT_ORD_AMT /*전년동기대비매출액*/
|
|
|
|
|
- , SUM(SOD.SELF_AMT) AS SELF_AMT /*자사직방문매출액*/
|
|
|
|
|
- , SUM(SOD.CHANNEL_AMT) AS CHANNEL_AMT /*채널매출액*/
|
|
|
|
|
- , SUM(SOD.EXTMALL_AMT) AS EXTMALL_AMT /*제휴몰매출액*/
|
|
|
|
|
- , SUM(SOD.CNCL_AMT + SOD.RTN_AMT) AS CNCL_AMT /*취/반품액*/
|
|
|
|
|
- , SUM(SOD.ORD_CNT) AS ORD_CNT /*주문건수*/
|
|
|
|
|
- , SUM(SOD.SELL_QTY) AS SELL_QTY /*판매수량*/
|
|
|
|
|
- , SUM(SOD.CNCL_QTY + SOD.RTN_QTY) AS CNCL_QTY /*취/반품수량*/
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- , CONCAT(MONTH(SOD.DAY), '월 ', WEEK(SOD.DAY,5) - WEEK(DATE_SUB(SOD.DAY, INTERVAL DAYOFMONTH(SOD.DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- , DATE_FORMAT(SOD.DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- , DATE_FORMAT(SOD.DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- FROM TB_STAT_ORD_DAY SOD
|
|
|
|
|
- WHERE 1 = 1
|
|
|
|
|
- AND SOD.DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND SOD.DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- AND (
|
|
|
|
|
- 1 = 1
|
|
|
|
|
- <if test='frontGbP != null and frontGbP != ""'>
|
|
|
|
|
- OR SOD.FRONT_GB = 'P'
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='frontGbM != null and frontGbM != ""'>
|
|
|
|
|
- OR SOD.FRONT_GB = 'M'
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='frontGbA != null and frontGbA != ""'>
|
|
|
|
|
- OR SOD.FRONT_GB = 'A'
|
|
|
|
|
- </if>
|
|
|
|
|
- )
|
|
|
|
|
- <if test='mallGb != null and mallGb != ""'>
|
|
|
|
|
- AND IFNULL(SOD.EXTMALL_ID,'') != '' /*제휴몰만*/
|
|
|
|
|
- <if test='multiExtmallId != null and multiExtmallId != ""'>
|
|
|
|
|
- AND SOD.EXTMALL_ID IN
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- </if>
|
|
|
|
|
- AND (
|
|
|
|
|
- 1 = 1
|
|
|
|
|
- <if test='distributionGbWms != null and distributionGbWms != ""'>
|
|
|
|
|
- OR SOD.DISTRIBUTION_GB = 'WMS'
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='distributionGbScm != null and distributionGbScm != ""'>
|
|
|
|
|
- OR SOD.DISTRIBUTION_GB = 'SCM'
|
|
|
|
|
- </if>
|
|
|
|
|
- )
|
|
|
|
|
- <if test='multiSupplyCompCd != null and multiSupplyCompCd != ""'>
|
|
|
|
|
- AND SOD.SUPPLY_COMP_CD IN
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='multiAfLinkCd != null and multiAfLinkCd != ""'>
|
|
|
|
|
- AND SOD.AF_LINK_CD IN
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='multiBrandCd != null and multiBrandCd != ""'>
|
|
|
|
|
- AND SOD.BRAND_CD IN
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test='multiItemkindCd != null and multiItemkindCd != ""'>
|
|
|
|
|
- AND SOD.ITEMKIND_CD IN
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(SOD.DAY), '월 ', WEEK(SOD.DAY,5) - WEEK(DATE_SUB(SOD.DAY, INTERVAL DAYOFMONTH(SOD.DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(SOD.DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(SOD.DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 상품별 주문 목록 -->
|
|
|
|
|
- <select id="getGoodsOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getGoodsOrderList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- FN_GET_CODE_NM('G009',A.FORMAL_GB) AS FORMAL_GB -- 정상이월구분
|
|
|
|
|
- , A.GOODS_CD -- 상품코드
|
|
|
|
|
- , B.GOODS_NM -- 상품명
|
|
|
|
|
- , SUM(C.STOCK_QTY) AS STOCK_QTY -- 현재고수량
|
|
|
|
|
- , SUM(A.SELL_QTY) AS SELL_QTY -- 판매수량
|
|
|
|
|
- , SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.GOODS_CPN_AMT - A.TMTB_AMT - A.CART_CPN_AMT) AS PAY_AMT -- 상품당결제액
|
|
|
|
|
- , SUM(A.ORD_AMT) AS ORD_AMT -- 매출액
|
|
|
|
|
- , SUM(A.GOODS_CPN_AMT) AS GOODS_CPN_AMT -- 즉시/주문상품쿠폰
|
|
|
|
|
- , SUM(A.TMTB_AMT) AS TMTB_AMT -- 다다익선
|
|
|
|
|
- , SUM(A.CART_CPN_AMT) AS CART_CPN_AMT -- 장바구니쿠폰
|
|
|
|
|
- , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY -- 취/환불수량
|
|
|
|
|
- , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT -- 취/환불액
|
|
|
|
|
- , SUM(A.SAVE_PNT_AMT) AS SAVE_PNT_AMT -- 지급포인트
|
|
|
|
|
- FROM TB_STAT_ORD_DAY A, TB_GOODS B, TB_GOODS_STOCK C
|
|
|
|
|
- WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
|
|
- AND B.GOODS_CD = C.GOODS_CD
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- AND A.DAY >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND A.DAY < DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiExtmallId != null">
|
|
|
|
|
- /* 제휴몰 */
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAfLinkCd != null">
|
|
|
|
|
- /* 채널 */
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiGoodsCd != null">
|
|
|
|
|
- /* 상품코드 */
|
|
|
|
|
- <foreach collection="multiGoodsCd" item="item" index="index" open="AND (" close=")" separator="OR">A.GOODS_CD LIKE CONCAT('%', #{item}, '%')</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND B.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY A.FORMAL_GB, A.GOODS_CD, B.GOODS_NM, B.SELF_GOODS_YN
|
|
|
|
|
- ORDER BY B.SELF_GOODS_YN DESC, A.FORMAL_GB, A.GOODS_CD
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 제휴몰 주문 목록 조회 -->
|
|
|
|
|
- <select id="getExtmallOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getExtmallOrderList */
|
|
|
|
|
- SELECT EXTMALL_NM
|
|
|
|
|
- , TOT_AMT
|
|
|
|
|
- , SELL_QTY
|
|
|
|
|
- , EXTMALL_AMT
|
|
|
|
|
- , CNCL_QTY
|
|
|
|
|
- , CNCL_AMT
|
|
|
|
|
- , REAL_ORD_AMT
|
|
|
|
|
- , SELL_FEE_RATE
|
|
|
|
|
- , EX_USAC_AMT
|
|
|
|
|
- , YOY_TOT_ORD_AMT
|
|
|
|
|
- , ROUND(TOT_AMT / (CASE WHEN TOT_AMT > 0 AND YOY_TOT_ORD_AMT = 0 THEN 1 ELSE YOY_TOT_ORD_AMT END) * 100 - 100,1) AS YOY_RATE /*증가율*/
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- (SELECT EXTMALL_NM FROM TB_EXTMALL X WHERE X.EXTMALL_ID = A.EXTMALL_ID LIMIT 1) AS EXTMALL_NM
|
|
|
|
|
- , SUM(A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT /* 총매출 */
|
|
|
|
|
- , SUM(A.SELL_QTY) AS SELL_QTY /* 판매수량 */
|
|
|
|
|
- , SUM(A.EXTMALL_AMT) AS EXTMALL_AMT
|
|
|
|
|
- , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY /*취/반품수량*/
|
|
|
|
|
- , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT /*취/반품액*/
|
|
|
|
|
- , SUM(A.REAL_ORD_AMT) AS REAL_ORD_AMT /*실결제액 */
|
|
|
|
|
- , (SELECT SELL_FEE_RATE FROM TB_EXTMALL X WHERE X.EXTMALL_ID = A.EXTMALL_ID LIMIT 1) AS SELL_FEE_RATE /*수수료율*/
|
|
|
|
|
- , (SUM(A.REAL_ORD_AMT) * (1 - (SELECT SELL_FEE_RATE FROM TB_EXTMALL X WHERE X.EXTMALL_ID = A.EXTMALL_ID LIMIT 1) / 100)) AS EX_USAC_AMT
|
|
|
|
|
- , IFNULL((SELECT SUM(X.EXTMALL_AMT - X.CNCL_AMT - X.RTN_AMT)
|
|
|
|
|
- FROM TB_STAT_ORD_DAY X
|
|
|
|
|
- WHERE 1 = 1
|
|
|
|
|
- AND X.EXTMALL_ID = A.EXTMALL_ID
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- AND X.DAY >= DATE_ADD(STR_TO_DATE(#{startDt},'%Y-%m-%d'), INTERVAL -1 YEAR)
|
|
|
|
|
- AND X.DAY < DATE_ADD(DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND X.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND X.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND X.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAfLinkCd != null">
|
|
|
|
|
- /* 채널 */
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="AND X.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND X.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND X.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND X.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- ),0) AS YOY_TOT_ORD_AMT /*전년동기대비매출액*/
|
|
|
|
|
- FROM TB_STAT_ORD_DAY A
|
|
|
|
|
- WHERE 1=1
|
|
|
|
|
- AND A.EXTMALL_ID IS NOT NULL
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- AND A.DAY >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND A.DAY < DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAfLinkCd != null">
|
|
|
|
|
- /* 채널 */
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY A.EXTMALL_ID
|
|
|
|
|
- ) TAB
|
|
|
|
|
- ORDER BY TAB.EXTMALL_NM
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 채널 주문목록 조회 -->
|
|
|
|
|
- <select id="getChannelOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getChannelOrderList */
|
|
|
|
|
- SELECT AF_LINK_CD
|
|
|
|
|
- , AF_LINK_NM
|
|
|
|
|
- , CHANNEL_AMT
|
|
|
|
|
- , TOT_AMT
|
|
|
|
|
- , SELL_QTY
|
|
|
|
|
- , CNCL_QTY
|
|
|
|
|
- , CNCL_AMT
|
|
|
|
|
- , REAL_ORD_AMT
|
|
|
|
|
- , SELL_FEE_RATE
|
|
|
|
|
- , EX_USAC_AMT
|
|
|
|
|
- , YOY_TOT_ORD_AMT
|
|
|
|
|
- , ROUND(TOT_AMT / (CASE WHEN TOT_AMT >0 AND YOY_TOT_ORD_AMT = 0 THEN 1 ELSE YOY_TOT_ORD_AMT END) * 100 - 100,1) AS YOY_RATE /*증가율*/
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- A.AF_LINK_CD
|
|
|
|
|
- , B.AF_LINK_NM
|
|
|
|
|
- , SUM(A.CHANNEL_AMT) AS CHANNEL_AMT
|
|
|
|
|
- , SUM(A.CHANNEL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT /* 총매출 */
|
|
|
|
|
- , SUM(A.SELL_QTY) AS SELL_QTY /* 판매수량 */
|
|
|
|
|
- , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY /* 취/반품수량 */
|
|
|
|
|
- , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT /* 취/반품액 */
|
|
|
|
|
- , SUM(A.REAL_ORD_AMT) AS REAL_ORD_AMT /* 실결제금액 */
|
|
|
|
|
- , (SELECT FEE_RATE FROM TB_AF_LINK X WHERE X.AF_LINK_CD = A.AF_LINK_CD) AS SELL_FEE_RATE
|
|
|
|
|
- , (SUM(A.REAL_ORD_AMT) * (1 - (SELECT FEE_RATE FROM TB_AF_LINK X WHERE X.AF_LINK_CD = A.AF_LINK_CD) / 100)) AS EX_USAC_AMT
|
|
|
|
|
- , IFNULL((SELECT SUM(X.CHANNEL_AMT - X.CNCL_AMT - X.RTN_AMT) AS YOY_TOT_ORD_AMT
|
|
|
|
|
- FROM TB_STAT_ORD_DAY X
|
|
|
|
|
- WHERE X.AF_LINK_CD = A.AF_LINK_CD
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- AND X.DAY >= DATE_ADD(STR_TO_DATE(#{startDt},'%Y-%m-%d'), INTERVAL -1 YEAR)
|
|
|
|
|
- AND X.DAY < DATE_ADD(DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND X.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND X.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND X.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND X.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND X.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>), 0) AS YOY_TOT_ORD_AMT
|
|
|
|
|
- FROM TB_STAT_ORD_DAY A
|
|
|
|
|
- INNER JOIN TB_AF_LINK B ON A.AF_LINK_CD = B.AF_LINK_CD
|
|
|
|
|
- WHERE B.AF_CHANNEL != 'G053_01'
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- AND A.DAY >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND A.DAY < DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY AF_LINK_CD
|
|
|
|
|
- ) TAB
|
|
|
|
|
- ORDER BY AF_LINK_NM
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 브랜드 주문목록 조회 -->
|
|
|
|
|
- <select id="getBrandOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getBrandOrderList */
|
|
|
|
|
- WITH YOY AS (
|
|
|
|
|
- SELECT X.BRAND_CD, SUM(X.SELF_AMT + X.CHANNEL_AMT + X.EXTMALL_AMT - X.CNCL_AMT - X.RTN_AMT) AS YOY_TOT_ORD_AMT
|
|
|
|
|
- FROM TB_STAT_ORD_DAY X
|
|
|
|
|
- WHERE 1=1
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- AND X.DAY >= DATE_ADD(STR_TO_DATE(#{startDt},'%Y-%m-%d'), INTERVAL -1 YEAR)
|
|
|
|
|
- AND X.DAY < DATE_ADD(DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND X.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND X.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND X.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND X.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND X.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiExtmallId != null">
|
|
|
|
|
- /* 제휴몰 */
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="AND X.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAfLinkCd != null">
|
|
|
|
|
- /* 채널 */
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="AND X.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND Y.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY X.BRAND_CD
|
|
|
|
|
- )
|
|
|
|
|
- SELECT
|
|
|
|
|
- BRAND_CD /*브랜드코드*/
|
|
|
|
|
- , BRAND_ENM /*브랜드명*/
|
|
|
|
|
- , TOT_AMT /*총매출*/
|
|
|
|
|
- , SELL_QTY /*판매수량*/
|
|
|
|
|
- , SELFMALL_AMT /*자사몰매출*/
|
|
|
|
|
- , EXTMALL_AMT /*제휴몰매출*/
|
|
|
|
|
- , CNCL_AMT /*취/반품액*/
|
|
|
|
|
- , TOT_AMT_10 /*정상매출*/
|
|
|
|
|
- , TOT_AMT_20 /*이월매출*/
|
|
|
|
|
- , ROUND( ((FLOOR(TOT_AMT_10 / TOT_AMT * 10000 / 10)) / 10), 1) AS AMT_RATE_10 /*정상비*/
|
|
|
|
|
- , ROUND(TOT_AMT / (CASE WHEN TOT_AMT >0 AND (YOY_TOT_ORD_AMT IS NULL OR YOY_TOT_ORD_AMT = 0) THEN 1 ELSE YOY_TOT_ORD_AMT END) * 100 - 100,1) AS YOY_RATE /*증가율*/
|
|
|
|
|
- , YOY_TOT_ORD_AMT
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- BRAND_CD
|
|
|
|
|
- , BRAND_ENM
|
|
|
|
|
- , SELF_YN
|
|
|
|
|
- , SUM(TOT_AMT) AS TOT_AMT
|
|
|
|
|
- , SUM(SELL_QTY) AS SELL_QTY
|
|
|
|
|
- , SUM(SELFMALL_AMT) AS SELFMALL_AMT
|
|
|
|
|
- , SUM(EXTMALL_AMT) AS EXTMALL_AMT
|
|
|
|
|
- , SUM(CNCL_AMT) AS CNCL_AMT
|
|
|
|
|
- , SUM(CASE WHEN FORMAL_GB = 'G009_10' THEN TOT_AMT ELSE 0 END) AS TOT_AMT_10 /*정상매출*/
|
|
|
|
|
- , SUM(CASE WHEN FORMAL_GB = 'G009_20' THEN TOT_AMT ELSE 0 END) AS TOT_AMT_20 /*이월매출*/
|
|
|
|
|
- , YOY_TOT_ORD_AMT
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- A.BRAND_CD -- 브랜드코드
|
|
|
|
|
- , B.BRAND_ENM -- 브랜드명
|
|
|
|
|
- , B.SELF_YN -- 자사여부
|
|
|
|
|
- , A.FORMAL_GB -- 정상이월구분
|
|
|
|
|
- , SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT -- 총매출
|
|
|
|
|
- , SUM(A.SELL_QTY) AS SELL_QTY -- 판매수량
|
|
|
|
|
- , SUM(A.SELF_AMT + A.CHANNEL_AMT) AS SELFMALL_AMT -- 자사몰매출
|
|
|
|
|
- , SUM(A.EXTMALL_AMT) AS EXTMALL_AMT -- 제휴몰매출
|
|
|
|
|
- , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT -- 취/반품액
|
|
|
|
|
- , C.YOY_TOT_ORD_AMT
|
|
|
|
|
- FROM TB_STAT_ORD_DAY A LEFT OUTER JOIN YOY C ON A.BRAND_CD = C.BRAND_CD, TB_BRAND B
|
|
|
|
|
- WHERE A.BRAND_CD = B.BRAND_CD
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- AND DAY >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND DAY < DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiExtmallId != null">
|
|
|
|
|
- /* 제휴몰 */
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAfLinkCd != null">
|
|
|
|
|
- /* 채널 */
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY A.BRAND_CD, B.BRAND_ENM, B.SELF_YN, A.FORMAL_GB
|
|
|
|
|
- ) X
|
|
|
|
|
- GROUP BY BRAND_CD, BRAND_ENM, SELF_YN
|
|
|
|
|
- ) Z
|
|
|
|
|
- ORDER BY SELF_YN DESC, BRAND_ENM
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 시간별 주문 조회 -->
|
|
|
|
|
- <select id="getHourlyOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getHourlyOrderList */
|
|
|
|
|
- WITH TAB AS (
|
|
|
|
|
- SELECT
|
|
|
|
|
- DATE_FORMAT(DAY_TIME, '%H') AS HOUR
|
|
|
|
|
- , SUM(ORD_AMT) AS ORD_AMT /*매출*/
|
|
|
|
|
- , SUM(ORD_CUST) AS ORD_CUST /*주문자수*/
|
|
|
|
|
- , SUM(ORD_CNT) AS ORD_CNT /*주문수*/
|
|
|
|
|
- , SUM(SELL_QTY) AS SELL_QTY /*판매수*/
|
|
|
|
|
- , FLOOR(AVG(CUST_PRICE)) AS CUST_PRICE /*객단가*/
|
|
|
|
|
- , SUM(CNCL_QTY) AS CNCL_QTY /*취반품개수*/
|
|
|
|
|
- , SUM(CNCL_AMT) AS CNCL_AMT /*취반품액*/
|
|
|
|
|
- FROM TB_STAT_ORD_TIME A
|
|
|
|
|
- WHERE 1=1
|
|
|
|
|
- <if test="dtGb != null">
|
|
|
|
|
- <foreach collection="dtGb" item="item" index="index">
|
|
|
|
|
- <if test="item == 'COMPARE_TERMS'">
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- /* 직전동기간 */
|
|
|
|
|
- AND A.DAY_TIME >= DATE_ADD(DATE_FORMAT(#{startDt},'%Y-%m-%d'), INTERVAL (DATE_FORMAT(#{startDt}, '%Y%m%d') - DATE_FORMAT(#{endDt}, '%Y%m%d')) - 1 DAY)
|
|
|
|
|
- AND A.DAY_TIME < DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
- ]]>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="item == 'YOY'">
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- /* 전년비교 */
|
|
|
|
|
- AND A.DAY_TIME >= DATE_ADD(DATE_FORMAT(#{startDt}, '%Y%m%d'), INTERVAL -1 YEAR )
|
|
|
|
|
- AND A.DAY_TIME < DATE_ADD(DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR )
|
|
|
|
|
- ]]>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="item == 'DIY'">
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- /* 직접선택 */
|
|
|
|
|
- AND A.DAY_TIME >= DATE_FORMAT(#{compStDt}, '%Y%m%d')
|
|
|
|
|
- AND A.DAY_TIME < DATE_ADD(DATE_FORMAT(#{compEdDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- </if>
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiExtmallId != null">
|
|
|
|
|
- /* 제휴몰 */
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAfLinkCd != null">
|
|
|
|
|
- /* 채널 */
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- AND A.SHOT_DELV_YN = 'Y' /*총알배송*/
|
|
|
|
|
- GROUP BY HOUR
|
|
|
|
|
- )
|
|
|
|
|
- SELECT
|
|
|
|
|
- A.HOUR
|
|
|
|
|
- , A.ORD_AMT /*매출*/
|
|
|
|
|
- , B.ORD_AMT AS COMP_ORD_AMT /*비교*/
|
|
|
|
|
- , ROUND(FLOOR(A.ORD_AMT / (CASE WHEN B.ORD_AMT IS NULL OR B.ORD_AMT = 0 THEN 1 ELSE B.ORD_AMT END) * 100 * 100) / 100, 2) AS CPL_RATE /*달성율*/
|
|
|
|
|
- , A.ORD_CUST /*주문자수*/
|
|
|
|
|
- , A.ORD_CNT /*주문수*/
|
|
|
|
|
- , A.SELL_QTY /*판매수*/
|
|
|
|
|
- , A.CUST_PRICE /*객단가*/
|
|
|
|
|
- , A.CNCL_QTY /*취반품개수*/
|
|
|
|
|
- , A.CNCL_AMT /*취반품액*/
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- DATE_FORMAT(DAY_TIME, '%H') AS HOUR
|
|
|
|
|
- , SUM(ORD_AMT) AS ORD_AMT /*매출*/
|
|
|
|
|
- , SUM(ORD_CUST) AS ORD_CUST /*주문자수*/
|
|
|
|
|
- , SUM(ORD_CNT) AS ORD_CNT /*주문수*/
|
|
|
|
|
- , SUM(SELL_QTY) AS SELL_QTY /*판매수*/
|
|
|
|
|
- , FLOOR(AVG(CUST_PRICE)) AS CUST_PRICE /*객단가*/
|
|
|
|
|
- , SUM(CNCL_QTY) AS CNCL_QTY /*취반품개수*/
|
|
|
|
|
- , SUM(CNCL_AMT) AS CNCL_AMT /*취반품액*/
|
|
|
|
|
- FROM TB_STAT_ORD_TIME A
|
|
|
|
|
- WHERE 1=1
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- AND A.DAY_TIME >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
- AND A.DAY_TIME < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiExtmallId != null">
|
|
|
|
|
- /* 제휴몰 */
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAfLinkCd != null">
|
|
|
|
|
- /* 채널 */
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
-
|
|
|
|
|
- GROUP BY HOUR
|
|
|
|
|
- ) A
|
|
|
|
|
- LEFT OUTER JOIN TAB B ON A.HOUR = B.HOUR
|
|
|
|
|
- ORDER BY A.HOUR
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 카테고리별 주문 조회 -->
|
|
|
|
|
- <select id="getCategoryOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getCategoryOrderList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- A.ITEMKIND_CD
|
|
|
|
|
- , SUBSTRING_INDEX(T4.FULL_CATE_NM, ' > ', 1) AS CATE_NM1 /* 대분류 */
|
|
|
|
|
- , SUBSTRING_INDEX(SUBSTRING(T4.FULL_CATE_NM, INSTR(SUBSTRING_INDEX(T4.FULL_CATE_NM, ' > ', 2), ' > ') + 3), ' > ', 1) AS CATE_NM2 /* 중분류 */
|
|
|
|
|
- , SUBSTRING_INDEX(T4.FULL_CATE_NM, ' > ', -1) AS CATE_NM3 -- 소분류
|
|
|
|
|
- , (A.SELFMALL_AMT + A.EXTMALL_AMT) AS TOT_AMT /*총매출*/
|
|
|
|
|
- , SELFMALL_AMT /*자사몰매출*/
|
|
|
|
|
- , EXTMALL_AMT /*제휴몰매출*/
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- A.ITEMKIND_CD
|
|
|
|
|
- , SUM(CASE WHEN GB = '1' THEN AMT ELSE 0 END ) AS SELFMALL_AMT
|
|
|
|
|
- , SUM(CASE WHEN GB = '2' THEN AMT ELSE 0 END ) AS EXTMALL_AMT
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- A.ITEMKIND_CD
|
|
|
|
|
- , SUM(A.SELF_AMT + A.CHANNEL_AMT - A.CNCL_AMT - A.RTN_AMT) AS AMT
|
|
|
|
|
- , '1' AS GB
|
|
|
|
|
- FROM TB_STAT_ORD_DAY A
|
|
|
|
|
- WHERE EXTMALL_ID IS NULL
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- /* 직접선택 */
|
|
|
|
|
- AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
- AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiExtmallId != null">
|
|
|
|
|
- /* 제휴몰 */
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY A.ITEMKIND_CD
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT
|
|
|
|
|
- A.ITEMKIND_CD
|
|
|
|
|
- , SUM(A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS AMT
|
|
|
|
|
- , '2' AS GB
|
|
|
|
|
- FROM TB_STAT_ORD_DAY A
|
|
|
|
|
- WHERE EXTMALL_ID IS NOT NULL
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- /* 직접선택 */
|
|
|
|
|
- AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
- AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiExtmallId != null">
|
|
|
|
|
- /* 제휴몰 */
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY A.ITEMKIND_CD
|
|
|
|
|
- ) A
|
|
|
|
|
- GROUP BY A.ITEMKIND_CD
|
|
|
|
|
- ) A, TB_ITEMKIND_CATE TC, TB_CATE_4SRCH T4
|
|
|
|
|
- WHERE A.ITEMKIND_CD = TC.ITEMKIND_CD
|
|
|
|
|
- AND TC.CATE_NO = T4.LEAF_CATE_NO
|
|
|
|
|
- AND (A.SELFMALL_AMT + A.EXTMALL_AMT) > 0
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 카테고리 상세 조회 -->
|
|
|
|
|
- <select id="getCategoryOrderDetailList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getCategoryOrderDetailList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- C.BRAND_ENM
|
|
|
|
|
- , A.GOODS_CD
|
|
|
|
|
- , B.GOODS_NM
|
|
|
|
|
- , SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT /*총매출*/
|
|
|
|
|
- , SUM(A.SELL_QTY) AS SELL_QTY /*판매수량*/
|
|
|
|
|
- , SUM(A.ORD_CUST) AS ORD_CUST /*구매자수*/
|
|
|
|
|
- FROM TB_STAT_ORD_DAY A, TB_GOODS B, TB_BRAND C
|
|
|
|
|
- WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
|
|
- AND A.BRAND_CD = C.BRAND_CD
|
|
|
|
|
- AND (A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) > 0
|
|
|
|
|
- AND A.ITEMKIND_CD = #{itemkindCd}
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- /* 직접선택 */
|
|
|
|
|
- AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
- AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- GROUP BY C.BRAND_ENM, A.GOODS_CD, B.GOODS_NM
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 클래임 주문조회 -->
|
|
|
|
|
- <select id="getClaimOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getClaimOrderList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- DATE_FORMAT(DAY, '%m-%d') AS DAY
|
|
|
|
|
- , SUM(A.CNCL_AMT + A.RTN_AMT + A.CHG_DELV_FEE) AS CLM_AMT /*클레임액*/
|
|
|
|
|
- , SUM(A.CNCL_QTY + A.RTN_QTY + A.CHG_QTY) AS CLM_QTY /*클레임수*/
|
|
|
|
|
- , ROUND(FLOOR(SUM(A.CNCL_AMT + A.RTN_AMT + A.CHG_DELV_FEE) / SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT) * 100 * 10) / 10, 1) AS AMT_RATE
|
|
|
|
|
- , ROUND(FLOOR(SUM(A.CNCL_QTY + A.RTN_QTY + A.CHG_QTY) / SUM(A.SELL_QTY) * 100 * 10) / 10, 1) AS CLM_RATE
|
|
|
|
|
- , SUM(A.CNCL_QTY) AS CNCL_QTY /*취소수*/
|
|
|
|
|
- , SUM(A.CNCL_AMT) AS CNCL_AMT /*취소액*/
|
|
|
|
|
- , SUM(A.RTN_QTY) AS RTN_QTY /*반품수*/
|
|
|
|
|
- , SUM(A.RTN_AMT) AS RTN_AMT /*반품액*/
|
|
|
|
|
- , SUM(A.CHG_QTY) AS CHG_QTY /*교환수*/
|
|
|
|
|
- , SUM(A.CHG_DELV_FEE) AS CHG_DELV_FEE /*교환배송비*/
|
|
|
|
|
- FROM TB_STAT_ORD_DAY A
|
|
|
|
|
- WHERE 1=1
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- /* 직접선택 */
|
|
|
|
|
- AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
- AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiExtmallId != null">
|
|
|
|
|
- /* 제휴몰 */
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSupplyCompCd != null">
|
|
|
|
|
- /* 공급처 */
|
|
|
|
|
- <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAfLinkCd != null">
|
|
|
|
|
- /* 채널 */
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY, '%m-%d')
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 베스트 상품 조회 -->
|
|
|
|
|
- <sql id="getBestOrderListSql">
|
|
|
|
|
- /* TsaStatistics.getBestOrderList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- (SELECT SUBSTRING_INDEX(SYS_IMG_NM , '/', 2) FROM TB_GOODS_IMG X WHERE X.GOODS_CD = B.GOODS_CD AND X.DEFAULT_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM /*상품이미지*/
|
|
|
|
|
- , C.BRAND_ENM /*브랜드명*/
|
|
|
|
|
- , A.GOODS_CD /*상품코드*/
|
|
|
|
|
- , B.GOODS_NM /*상품명*/
|
|
|
|
|
- , CASE WHEN A.DISTRIBUTION_GB = 'WMS' THEN '위탁' ELSE '입점' END AS DISTRIBUTION_GB /*구분*/
|
|
|
|
|
- , B.CURR_PRICE /*판매가*/
|
|
|
|
|
- , SUM(A.SELL_QTY - A.CNCL_QTY - A.RTN_QTY) AS SELL_QTY /*판매수*/
|
|
|
|
|
- , SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT /*매출액*/
|
|
|
|
|
- , SUM(D.STOCK_QTY) AS STOCK_QTY /*현재고수량*/
|
|
|
|
|
- FROM TB_STAT_ORD_DAY A, TB_GOODS B, TB_BRAND C, TB_GOODS_STOCK D
|
|
|
|
|
- WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
|
|
- AND A.BRAND_CD = C.BRAND_CD
|
|
|
|
|
- AND A.GOODS_CD = D.GOODS_CD
|
|
|
|
|
- <![CDATA[
|
|
|
|
|
- /* 직접선택 */
|
|
|
|
|
- AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
- AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
- ]]>
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiExtmallId != null">
|
|
|
|
|
- /* 제휴몰 */
|
|
|
|
|
- <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
|
|
- /* 물류구분 */
|
|
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiFormalGb != null">
|
|
|
|
|
- /* 정상/이월구분 */
|
|
|
|
|
- <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSexGb != null">
|
|
|
|
|
- /* 성별구분 */
|
|
|
|
|
- <foreach collection="multiSexGb" item="item" index="index" open="AND A.SEX_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAgeGb != null">
|
|
|
|
|
- /* 성별구분 */
|
|
|
|
|
- <foreach collection="multiAgeGb" item="item" index="index" open="AND A.AGE IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAfLinkCd != null">
|
|
|
|
|
- /* 채널 */
|
|
|
|
|
- <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY C.BRAND_ENM, A.GOODS_CD, B.GOODS_NM, A.DISTRIBUTION_GB, B.CURR_PRICE
|
|
|
|
|
- ORDER BY TOT_AMT DESC
|
|
|
|
|
- </sql>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 베스트 주문조회 -->
|
|
|
|
|
- <select id="getBestOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- <include refid="getBestOrderListSql"></include>
|
|
|
|
|
- </select>
|
|
|
|
|
- <!-- 베스트 주문조회 -->
|
|
|
|
|
- <select id="getBestOrderListMap" parameterType="Statistics" resultType="paramMap">
|
|
|
|
|
- <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
|
|
|
|
|
- , ROUND((USE_CNT / DOWN_CNT) * 100 * 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
|
|
|
|
|
- , ROUND((X.CUST_CPN_CNT / Z.CUST_CNT * 100 * 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
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test="applyGbArr != null and applyGbArr != ''">
|
|
|
|
|
- /* 프로모션유형 */
|
|
|
|
|
- <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>
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise>
|
|
|
|
|
- /* 프로모션유형값없을시 */
|
|
|
|
|
- AND (B.TMTB1_DC_AMT + B.TMTB2_DC_AMT) > 0
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- )
|
|
|
|
|
- -- 수량할인
|
|
|
|
|
- , 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
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test="distributionGbS != null and distributionGbS !='' and distributionGbW != null and distributionGbW !=''">
|
|
|
|
|
- AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12', 'G065_20')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test="distributionGbW != null and distributionGbW !=''">
|
|
|
|
|
- AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test="distributionGbS != null and distributionGbS !=''">
|
|
|
|
|
- AND C.DISTRIBUTION_GB = 'G065_20'
|
|
|
|
|
- </when>
|
|
|
|
|
- </choose>
|
|
|
|
|
- <if test="multiPlanSq != 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
|
|
|
|
|
- , ROUND((SUM(CUST_CNT) / (SELECT TOT_CUST_CNT FROM TAB) * 100 * 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
|
|
|
|
|
- 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>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 카드 목록 -->
|
|
|
|
|
- <select id="getCardList" resultType="Card">
|
|
|
|
|
- /* TsaStatistics.getCardList */
|
|
|
|
|
- SELECT CD AS CARD_CD
|
|
|
|
|
- , CD_NM AS CARD_NM
|
|
|
|
|
- FROM TB_COMMON_CODE
|
|
|
|
|
- WHERE CD_GB = 'G050'
|
|
|
|
|
- ORDER BY CD_GB, DISP_ORD
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 결제수단별통계 목록 -->
|
|
|
|
|
- <select id="getPaymentList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getPaymentList */
|
|
|
|
|
- WITH TAB AS (
|
|
|
|
|
- SELECT
|
|
|
|
|
- DATE_FORMAT(DAY, '%Y-%m-%d') AS DAY
|
|
|
|
|
- , PAY_MEANS -- 결제수단
|
|
|
|
|
- , PAY_AMT -- 결제금액
|
|
|
|
|
- , PG_GB -- PG구분
|
|
|
|
|
- FROM TB_STAT_PAY A
|
|
|
|
|
- WHERE 1=1
|
|
|
|
|
- AND A.DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND A.DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- <if test='multiCardId != null and multiCardId != ""'>
|
|
|
|
|
- AND COM_CARD_CD IN
|
|
|
|
|
- <foreach collection="multiCardId" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
- #{item}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='simpleGbC != null and simpleGbC != "" and simpleGbB != null and simpleGbB != ""'>
|
|
|
|
|
- AND PG_GB IN('KAKAO','NAVER','PAYCO')
|
|
|
|
|
- AND PAY_MEANS IN ('G014_30','G014_10')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='simpleGbC != null and simpleGbC != ""'>
|
|
|
|
|
- AND PG_GB IN('KAKAO','NAVER','PAYCO')
|
|
|
|
|
- AND PAY_MEANS = 'G014_30'
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='simpleGbB != null and simpleGbB != ""'>
|
|
|
|
|
- AND PG_GB IN('KAKAO','NAVER','PAYCO')
|
|
|
|
|
- AND PAY_MEANS = 'G014_10'
|
|
|
|
|
- </when>
|
|
|
|
|
- </choose>
|
|
|
|
|
- )
|
|
|
|
|
- SELECT
|
|
|
|
|
- DAY
|
|
|
|
|
- , SUM(CD_AMT) AS CD_AMT -- 카드
|
|
|
|
|
- , SUM(AC_AMT) AS AC_AMT -- 실시간계좌이체
|
|
|
|
|
- , SUM(VA_AMT) AS VA_AMT -- 무통장
|
|
|
|
|
- , SUM(HP_AMT) AS HP_AMT -- 휴대폰
|
|
|
|
|
- , SUM(CP_AMT) AS CP_AMT -- PG쿠폰
|
|
|
|
|
- , SUM(NPAY_AMT) AS NPAY_AMT -- 네이버페이
|
|
|
|
|
- , SUM(PAYCO_AMT) AS PAYCO_AMT -- 페이코
|
|
|
|
|
- , SUM(KAKAO_AMT) AS KAKAO_AMT -- 카카오
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- DAY
|
|
|
|
|
- , CASE WHEN PAY_MEANS = 'G014_30' THEN PAY_AMT ELSE 0 END AS CD_AMT
|
|
|
|
|
- , CASE WHEN PAY_MEANS = 'G014_10' THEN PAY_AMT ELSE 0 END AS AC_AMT
|
|
|
|
|
- , CASE WHEN PAY_MEANS = 'G014_20' THEN PAY_AMT ELSE 0 END AS VA_AMT
|
|
|
|
|
- , CASE WHEN PAY_MEANS = 'G014_60' THEN PAY_AMT ELSE 0 END AS HP_AMT
|
|
|
|
|
- , CASE WHEN PAY_MEANS = 'G014_50' THEN PAY_AMT ELSE 0 END AS CP_AMT
|
|
|
|
|
- , CASE WHEN PAY_MEANS = 'NAVER' THEN PAY_AMT ELSE 0 END AS NPAY_AMT
|
|
|
|
|
- , CASE WHEN PAY_MEANS = 'PAYCO' THEN PAY_AMT ELSE 0 END AS PAYCO_AMT
|
|
|
|
|
- , CASE WHEN PAY_MEANS = 'KAKAO' THEN PAY_AMT ELSE 0 END AS KAKAO_AMT
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , PAY_MEANS
|
|
|
|
|
- , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- WHERE PAY_MEANS = 'G014_30'
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , PAY_MEANS
|
|
|
|
|
- , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- WHERE PAY_MEANS = 'G014_10'
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , PAY_MEANS
|
|
|
|
|
- , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- WHERE PAY_MEANS = 'G014_20'
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , PAY_MEANS
|
|
|
|
|
- , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- WHERE PAY_MEANS = 'G014_60'
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , PAY_MEANS
|
|
|
|
|
- , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- WHERE PAY_MEANS = 'G014_50'
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , PG_GB AS PAY_MEANS
|
|
|
|
|
- , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- WHERE PG_GB = 'NAVER'
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , PG_GB AS PAY_MEANS
|
|
|
|
|
- , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- WHERE PG_GB = 'PAYCO'
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , PG_GB AS PAY_MEANS
|
|
|
|
|
- , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- WHERE PG_GB = 'KAKAO'
|
|
|
|
|
- GROUP BY DAY
|
|
|
|
|
- ) Z
|
|
|
|
|
- ) Z
|
|
|
|
|
- GROUP BY DAY
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 부결제수단별통계 목록 -->
|
|
|
|
|
- <select id="getSubPaymentList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getSubPaymentList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , SUM(A.PNT_GIVE) AS PNT_GIVE -- 포인트적립액
|
|
|
|
|
- , SUM(A.PNT_ORD_CNT) AS PNT_ORD_CNT -- 포인트사용주문수
|
|
|
|
|
- , SUM(A.PNT_USE) AS PNT_USE -- 포인트사용액
|
|
|
|
|
- , SUM(A.GIFT_REG_CNT) AS GIFT_REG_CNT -- 상품권등록매수
|
|
|
|
|
- , SUM(A.GIFT_ORD_CNT) AS GIFT_ORD_CNT -- 상품권주문수
|
|
|
|
|
- , SUM(A.GIFT_USE) AS GIFT_USE -- 상품권사용액
|
|
|
|
|
- FROM TB_STAT_SUB_PAY A
|
|
|
|
|
- WHERE A.DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND A.DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='pointGb != null and pointGb != "" and giftCardGb != null and giftCardGb != ""'>
|
|
|
|
|
- AND OCCUR_GB IN(#{pointGb}, #{giftCardGb})
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='pointGb != null and pointGb != ""'>
|
|
|
|
|
- AND OCCUR_GB = #{pointGb}
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='giftCardGb != null and giftCardGb != ""'>
|
|
|
|
|
- AND OCCUR_GB = {giftCardGb}
|
|
|
|
|
- </when>
|
|
|
|
|
- </choose>
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 포인트잔액 -->
|
|
|
|
|
- <select id="getRemainPoint" resultType="java.lang.Long">
|
|
|
|
|
- /* TsaStatistics.getRemainPoint */
|
|
|
|
|
- SELECT
|
|
|
|
|
- SUM(RM_PNT_AMT) AS RM_PNT_AMT
|
|
|
|
|
- FROM TB_CUST_POINT A
|
|
|
|
|
- WHERE A.EXP_CMP_DT IS NULL
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 포인트잔액 -->
|
|
|
|
|
- <select id="getRemainGiftCard" resultType="java.lang.Long">
|
|
|
|
|
- /* TsaStatistics.getRemainGiftCard */
|
|
|
|
|
- SELECT
|
|
|
|
|
- SUM(RM_GFCD_AMT) AS RM_GFCD_AMT
|
|
|
|
|
- FROM TB_CUST_GIFTCARD A
|
|
|
|
|
- WHERE DATE_FORMAT(USE_EXP_DATE, '%Y%m%d') < NOW()
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 가입통계 -->
|
|
|
|
|
- <select id="getCustomerJoinList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getCustomerJoinList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- , MAX(ALL_CNT) AS ALL_CNT
|
|
|
|
|
- , MAX(REAL_CNT) AS REAL_CNT
|
|
|
|
|
- , MAX(DORM_CNT) AS DORM_CNT
|
|
|
|
|
- , MAX(VIP_CNT) AS VIP_CNT
|
|
|
|
|
- , MAX(GOLD_CNT) AS GOLD_CNT
|
|
|
|
|
- , MAX(SILVER_CNT) AS SILVER_CNT
|
|
|
|
|
- , MAX(BRONZE_CNT) AS BRONZE_CNT
|
|
|
|
|
- , MAX(WELCOME_CNT) AS WELCOME_CNT
|
|
|
|
|
- , SUM(JOIN_CNT) AS JOIN_CNT
|
|
|
|
|
- , SUM(DR_JOIN_CNT) AS DR_JOIN_CNT
|
|
|
|
|
- , SUM(AF_JOIN_CNT) AS AF_JOIN_CNT
|
|
|
|
|
- , SUM(CHG_DORM_CNT) AS CHG_DORM_CNT
|
|
|
|
|
- , SUM(RM_DORM_CNT) AS RM_DORM_CNT
|
|
|
|
|
- , SUM(SECEED_CNT) AS SECEED_CNT
|
|
|
|
|
- FROM TB_STAT_CUST
|
|
|
|
|
- WHERE DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- <if test="multiSexGb != null">
|
|
|
|
|
- /* 성별구분 */
|
|
|
|
|
- <foreach collection="multiSexGb" item="item" index="index" open="AND SEX_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAgeGb != null">
|
|
|
|
|
- /* 연령구분 */
|
|
|
|
|
- <foreach collection="multiAgeGb" item="item" index="index" open="AND AGE IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <choose>
|
|
|
|
|
- <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
- GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
- </when>
|
|
|
|
|
- <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
- </when>
|
|
|
|
|
- <otherwise> <!-- 일별 -->
|
|
|
|
|
- GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
- </otherwise>
|
|
|
|
|
- </choose>
|
|
|
|
|
- ORDER BY DAY DESC
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 등급별주문현황 -->
|
|
|
|
|
- <select id="getCustomerGradOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getCustomerGradOrderList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- CASE WHEN A.CUST_GRADE = 'G110_10' THEN 1
|
|
|
|
|
- WHEN A.CUST_GRADE = 'G110_20' THEN 2
|
|
|
|
|
- WHEN A.CUST_GRADE = 'G110_30' THEN 3
|
|
|
|
|
- WHEN A.CUST_GRADE = 'G110_40' THEN 4
|
|
|
|
|
- WHEN A.CUST_GRADE = 'G110_50' THEN 5
|
|
|
|
|
- ELSE 6 END AS PRIORITY
|
|
|
|
|
- , FN_GET_CODE_NM('G110', A.CUST_GRADE) AS CUST_GRADE
|
|
|
|
|
- , SUM(A.ORD_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_ORD_AMT -- 총매출액
|
|
|
|
|
- , SUM(A.ORD_AMT) AS ORD_AMT -- 매출액
|
|
|
|
|
- , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT -- 취/반품액
|
|
|
|
|
- , SUM(A.ORD_CNT) AS ORD_CNT -- 주문수
|
|
|
|
|
- , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY -- 취/반품갯수
|
|
|
|
|
- , ROUND(CEIL(AVG(A.ORD_CNT) * 10) / 10, 1) AS AVG_ORD_CNT -- 평균주문수
|
|
|
|
|
- , ROUND(CEIL(AVG(A.SELL_QTY) * 10) / 10, 1) AS AVG_SELL_QTY -- 평균주문상품개수
|
|
|
|
|
- , FLOOR(SUM(A.ORD_AMT) / SUM(A.ORD_CNT)) AS CUST_PRICE -- 객단가
|
|
|
|
|
- FROM TB_STAT_CUST_ORD A
|
|
|
|
|
- WHERE DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSexGb != null">
|
|
|
|
|
- /* 성별구분 */
|
|
|
|
|
- <foreach collection="multiSexGb" item="item" index="index" open="AND SEX_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAgeGb != null">
|
|
|
|
|
- /* 연령구분 */
|
|
|
|
|
- <foreach collection="multiAgeGb" item="item" index="index" open="AND AGE IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY A.CUST_GRADE
|
|
|
|
|
- ORDER BY PRIORITY
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 등급별주문현황 -->
|
|
|
|
|
- <select id="getCustomerAgeOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getCustomerAgeOrderList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- CASE WHEN A.AGE != 'X' THEN CONCAT(A.AGE, '대') ELSE '50대이상/기타' END AS AGE
|
|
|
|
|
- , FN_GET_CODE_NM('G007', A.SEX_GB) AS SEX_GB
|
|
|
|
|
- , SUM(A.ORD_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_ORD_AMT -- 총매출액
|
|
|
|
|
- , SUM(A.ORD_AMT) AS ORD_AMT -- 매출액
|
|
|
|
|
- , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT -- 취/반품액
|
|
|
|
|
- , SUM(A.ORD_CNT) AS ORD_CNT -- 주문수
|
|
|
|
|
- , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY -- 취/반품갯수
|
|
|
|
|
- , ROUND(CEIL(AVG(A.ORD_CNT) * 10) / 10, 1) AS AVG_ORD_CNT -- 평균주문수
|
|
|
|
|
- , ROUND(CEIL(AVG(A.SELL_QTY) * 10) / 10, 1) AS AVG_SELL_QTY -- 평균주문상품개수
|
|
|
|
|
- , FLOOR(SUM(A.ORD_AMT) / SUM(A.ORD_CNT)) AS CUST_PRICE -- 객단가
|
|
|
|
|
- FROM TB_STAT_CUST_ORD A
|
|
|
|
|
- WHERE DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
- AND DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiGradeGb != null">
|
|
|
|
|
- /* 등급 */
|
|
|
|
|
- <foreach collection="multiGradeGb" item="item" index="index" open="AND CUST_GRADE IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY A.AGE, A.SEX_GB
|
|
|
|
|
- ORDER BY A.AGE, A.SEX_GB
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 구매자랭킹 -->
|
|
|
|
|
- <select id="getCustomerRankingList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getCustomerRankingList */
|
|
|
|
|
- WITH TAB AS (
|
|
|
|
|
- SELECT *
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT A.ORD_NO
|
|
|
|
|
- , B.ORD_DTL_NO
|
|
|
|
|
- , B.ORD_QTY
|
|
|
|
|
- , B.CNCL_RTN_QTY
|
|
|
|
|
- , B.ORD_AMT
|
|
|
|
|
- , B.CNCL_RTN_AMT
|
|
|
|
|
- , B.CPN1_DC_AMT
|
|
|
|
|
- , A.PAY_DT
|
|
|
|
|
- , A.FRONT_GB
|
|
|
|
|
- , C.ITEMKIND_CD
|
|
|
|
|
- , C.BRAND_CD
|
|
|
|
|
- , E.CUST_NO
|
|
|
|
|
- , E.CUST_GRADE
|
|
|
|
|
- , RANK() OVER (PARTITION BY B.ORD_DTL_NO ORDER BY B.ORD_DTL_HST_SQ) AS RNK
|
|
|
|
|
- FROM TB_ORDER A,
|
|
|
|
|
- TB_ORDER_DETAIL_HST B,
|
|
|
|
|
- TB_GOODS C,
|
|
|
|
|
- TB_CUSTOMER E
|
|
|
|
|
- WHERE A.ORD_NO = B.ORD_NO
|
|
|
|
|
- AND B.GOODS_CD = C.GOODS_CD
|
|
|
|
|
- AND A.CUST_NO = E.CUST_NO
|
|
|
|
|
- AND A.PAY_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
- AND A.PAY_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
- AND E.CUST_NO > 0
|
|
|
|
|
- AND A.MALL_GB = 'G011_10'
|
|
|
|
|
- AND B.ORD_EXCH_GB = 'O'
|
|
|
|
|
- AND B.ORD_DTL_STAT = 'G013_20' -- 결제완료
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSexGb != null">
|
|
|
|
|
- /* 성별구분 */
|
|
|
|
|
- <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(E.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAgeGb != null">
|
|
|
|
|
- /* 연령구분 */
|
|
|
|
|
- <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(E.BIRTH_YMD) = '' OR FN_DEC_AES(E.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(E.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(E.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(E.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(E.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
- ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- ) A
|
|
|
|
|
- WHERE RNK = 1
|
|
|
|
|
- )
|
|
|
|
|
- -- 판매수
|
|
|
|
|
- , TAB_SELL_QTY AS (
|
|
|
|
|
- SELECT
|
|
|
|
|
- SUM(ORD_QTY) AS VAL
|
|
|
|
|
- , '1' AS GBN
|
|
|
|
|
- , CUST_NO
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- GROUP BY CUST_NO
|
|
|
|
|
- )
|
|
|
|
|
- -- 매출
|
|
|
|
|
- , TAB_ORD AS (
|
|
|
|
|
- SELECT
|
|
|
|
|
- SUM(ORD_AMT + CPN1_DC_AMT + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = A.ORD_DTL_NO)) AS VAL
|
|
|
|
|
- , '2' AS GBN
|
|
|
|
|
- , CUST_NO
|
|
|
|
|
- FROM TAB A
|
|
|
|
|
- GROUP BY CUST_NO
|
|
|
|
|
- )
|
|
|
|
|
- -- 취소갯수
|
|
|
|
|
- , TAB_CNCL_QTY AS (
|
|
|
|
|
- SELECT SUM(CHG_QTY) AS VAL
|
|
|
|
|
- , '3' AS GBN
|
|
|
|
|
- , C.CUST_NO
|
|
|
|
|
- FROM TB_ORDER_CHANGE_DETAIL A, TB_ORDER_DETAIL B, TB_ORDER C, TB_GOODS E, TB_CUSTOMER G
|
|
|
|
|
- WHERE A.ORD_DTL_NO = B.ORD_DTL_NO
|
|
|
|
|
- AND B.ORD_NO = C.ORD_NO
|
|
|
|
|
- AND B.GOODS_CD = E.GOODS_CD
|
|
|
|
|
- AND C.CUST_NO = G.CUST_NO
|
|
|
|
|
- AND CHG_STAT = 'G685_18' -- 결제후취소
|
|
|
|
|
- AND COMPLETE_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
- AND COMPLETE_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
- AND MALL_GB = 'G011_10'
|
|
|
|
|
- AND G.CUST_NO > 0
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND C.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSexGb != null">
|
|
|
|
|
- /* 성별구분 */
|
|
|
|
|
- <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(G.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAgeGb != null">
|
|
|
|
|
- /* 연령구분 */
|
|
|
|
|
- <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(G.BIRTH_YMD) = '' OR FN_DEC_AES(G.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
- ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY C.CUST_NO
|
|
|
|
|
- )
|
|
|
|
|
- -- 반품갯수
|
|
|
|
|
- , TAB_RTN_QTY AS (
|
|
|
|
|
- SELECT SUM(CHG_QTY) AS VAL
|
|
|
|
|
- , '4' AS GBN
|
|
|
|
|
- , C.CUST_NO
|
|
|
|
|
- FROM TB_ORDER_CHANGE_DETAIL A, TB_ORDER_DETAIL B, TB_ORDER C, TB_GOODS E, TB_CUSTOMER G
|
|
|
|
|
- WHERE A.ORD_DTL_NO = B.ORD_DTL_NO
|
|
|
|
|
- AND B.ORD_NO = C.ORD_NO
|
|
|
|
|
- AND B.GOODS_CD = E.GOODS_CD
|
|
|
|
|
- AND C.CUST_NO = G.CUST_NO
|
|
|
|
|
- AND CHG_STAT = 'G685_60' -- 반품완료
|
|
|
|
|
- AND COMPLETE_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
- AND COMPLETE_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
- AND MALL_GB = 'G011_10'
|
|
|
|
|
- AND G.CUST_NO > 0
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND C.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSexGb != null">
|
|
|
|
|
- /* 성별구분 */
|
|
|
|
|
- <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(G.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAgeGb != null">
|
|
|
|
|
- /* 연령구분 */
|
|
|
|
|
- <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(G.BIRTH_YMD) = '' OR FN_DEC_AES(G.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
- ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY C.CUST_NO
|
|
|
|
|
- )
|
|
|
|
|
- -- 취소액
|
|
|
|
|
- , TAB_CNCL_AMT AS (
|
|
|
|
|
- SELECT 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)) * B.CHG_QTY) AS VAL
|
|
|
|
|
- , '5' AS GBN
|
|
|
|
|
- , D.CUST_NO
|
|
|
|
|
- FROM TB_ORDER_CHANGE_DETAIL B, TB_ORDER_DETAIL C, TB_ORDER D, TB_GOODS E, TB_CUSTOMER G
|
|
|
|
|
- WHERE B.ORD_DTL_NO = C.ORD_DTL_NO
|
|
|
|
|
- AND C.ORD_NO = D.ORD_NO
|
|
|
|
|
- AND C.GOODS_CD = E.GOODS_CD
|
|
|
|
|
- AND D.CUST_NO = G.CUST_NO
|
|
|
|
|
- AND CHG_STAT = 'G685_18' -- 결제후취소
|
|
|
|
|
- AND B.COMPLETE_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
- AND B.COMPLETE_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
- AND MALL_GB = 'G011_10'
|
|
|
|
|
- AND G.CUST_NO > 0
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND D.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSexGb != null">
|
|
|
|
|
- /* 성별구분 */
|
|
|
|
|
- <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(G.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAgeGb != null">
|
|
|
|
|
- /* 연령구분 */
|
|
|
|
|
- <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(G.BIRTH_YMD) = '' OR FN_DEC_AES(G.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
- ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY D.CUST_NO
|
|
|
|
|
- )
|
|
|
|
|
- -- 반품액
|
|
|
|
|
- , TAB_RTN_AMT AS (
|
|
|
|
|
- SELECT 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)) * B.CHG_QTY) AS VAL
|
|
|
|
|
- , '6' AS GBN
|
|
|
|
|
- , D.CUST_NO
|
|
|
|
|
- FROM TB_ORDER_CHANGE_DETAIL B, TB_ORDER_DETAIL C, TB_ORDER D, TB_GOODS E, TB_CUSTOMER G
|
|
|
|
|
- WHERE B.ORD_DTL_NO = C.ORD_DTL_NO
|
|
|
|
|
- AND C.ORD_NO = D.ORD_NO
|
|
|
|
|
- AND C.GOODS_CD = E.GOODS_CD
|
|
|
|
|
- AND D.CUST_NO = G.CUST_NO
|
|
|
|
|
- AND CHG_STAT = 'G685_60' -- 반품완료
|
|
|
|
|
- AND B.COMPLETE_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
- AND B.COMPLETE_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
- AND MALL_GB = 'G011_10'
|
|
|
|
|
- AND G.CUST_NO > 0
|
|
|
|
|
- <if test="multiFrontGb != null">
|
|
|
|
|
- /* 디바이스 */
|
|
|
|
|
- <foreach collection="multiFrontGb" item="item" index="index" open="AND D.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiSexGb != null">
|
|
|
|
|
- /* 성별구분 */
|
|
|
|
|
- <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(G.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiAgeGb != null">
|
|
|
|
|
- /* 연령구분 */
|
|
|
|
|
- <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(G.BIRTH_YMD) = '' OR FN_DEC_AES(G.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
- ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiBrandCd != null">
|
|
|
|
|
- /* 브랜드 */
|
|
|
|
|
- <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- <if test="multiItemkindCd != null">
|
|
|
|
|
- /* 품목 */
|
|
|
|
|
- <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
- </if>
|
|
|
|
|
- GROUP BY D.CUST_NO
|
|
|
|
|
- )
|
|
|
|
|
- -- 주문수
|
|
|
|
|
- , TAB_ORD_CNT AS (
|
|
|
|
|
- SELECT
|
|
|
|
|
- SUM(VAL) AS VAL
|
|
|
|
|
- , '7' AS GBN
|
|
|
|
|
- , CUST_NO
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- 1 AS VAL
|
|
|
|
|
- , ORD_NO
|
|
|
|
|
- , CUST_NO
|
|
|
|
|
- FROM TAB
|
|
|
|
|
- GROUP BY ORD_NO, CUST_NO
|
|
|
|
|
- ) A
|
|
|
|
|
- GROUP BY CUST_NO
|
|
|
|
|
- )
|
|
|
|
|
- SELECT
|
|
|
|
|
- CONCAT(SUBSTRING(CUST_ID, 1, 3), '****', '(', SUBSTRING(FN_DEC_AES(CUST_NM), 1, 1), '**', ')') AS CUST_ID -- 아이디
|
|
|
|
|
- , CASE WHEN FN_DEC_AES(BIRTH_YMD) = '' OR FN_DEC_AES(BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
- WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
- ELSE 'X' END AS AGE
|
|
|
|
|
- , X.CUST_NO
|
|
|
|
|
- , FN_GET_CODE_NM('G007', FN_DEC_AES(SEX_GB)) AS SEX_GB
|
|
|
|
|
- , FN_GET_CODE_NM('G110', CUST_GRADE) AS CUST_GRADE -- 등급
|
|
|
|
|
- , SUM(ORD_AMT - CNCL_AMT - RTN_AMT) AS TOT_ORD_AMT -- 매출액
|
|
|
|
|
- , SUM(ORD_CNT) AS ORD_CNT -- 주문수
|
|
|
|
|
- , SUM(SELL_QTY - CNCL_QTY - RTN_QTY) AS SELL_QTY -- 판매수
|
|
|
|
|
- , FLOOR(SUM(ORD_AMT) / SUM(ORD_CNT)) AS CUST_PRICE -- 객단가
|
|
|
|
|
- , IFNULL((SELECT SUM(RM_PNT_AMT) FROM TB_CUST_POINT CP WHERE CP.CUST_NO = X.CUST_NO AND EXP_CMP_DT IS NULL), 0) AS CUST_POINT -- 회원포인트
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- CUST_NO
|
|
|
|
|
- , SUM(CASE WHEN GBN = '1' THEN VAL ELSE 0 END) AS SELL_QTY -- 판매수
|
|
|
|
|
- , SUM(CASE WHEN GBN = '2' THEN VAL ELSE 0 END) AS ORD_AMT -- 매출액(판매금액)
|
|
|
|
|
- , SUM(CASE WHEN GBN = '3' THEN VAL ELSE 0 END) AS CNCL_QTY -- 취소수량
|
|
|
|
|
- , SUM(CASE WHEN GBN = '4' THEN VAL ELSE 0 END) AS RTN_QTY -- 반품수량
|
|
|
|
|
- , SUM(CASE WHEN GBN = '5' THEN VAL ELSE 0 END) AS CNCL_AMT -- 취소금액
|
|
|
|
|
- , SUM(CASE WHEN GBN = '6' THEN VAL ELSE 0 END) AS RTN_AMT -- 반품금액
|
|
|
|
|
- , SUM(CASE WHEN GBN = '7' THEN VAL ELSE 0 END) AS ORD_CNT -- 주문수
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT * FROM TAB_SELL_QTY
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT * FROM TAB_ORD
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT * FROM TAB_CNCL_QTY
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT * FROM TAB_RTN_QTY
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT * FROM TAB_CNCL_AMT
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT * FROM TAB_RTN_AMT
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT * FROM TAB_ORD_CNT
|
|
|
|
|
- ) A
|
|
|
|
|
- GROUP BY CUST_NO
|
|
|
|
|
- ) X, TB_CUSTOMER Y
|
|
|
|
|
- WHERE X.CUST_NO = Y.CUST_NO
|
|
|
|
|
- GROUP BY X.CUST_NO
|
|
|
|
|
- ORDER BY TOT_ORD_AMT DESC
|
|
|
|
|
- LIMIT 50
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 미로그인현황 -->
|
|
|
|
|
- <select id="getCustomerUnloginList" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getCustomerUnloginList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- X.*
|
|
|
|
|
- , ROUND(CNT_5 / TOT_CNT * 100) AS PER_CNT_5
|
|
|
|
|
- , ROUND(CNT_4 / TOT_CNT * 100) AS PER_CNT_4
|
|
|
|
|
- , ROUND(CNT_3 / TOT_CNT * 100) AS PER_CNT_3
|
|
|
|
|
- , ROUND(CNT_2 / TOT_CNT * 100) AS PER_CNT_2
|
|
|
|
|
- , ROUND(CNT_1 / TOT_CNT * 100) AS PER_CNT_1
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT
|
|
|
|
|
- SUM(CASE WHEN GB = 5 THEN CNT ELSE 0 END) AS CNT_5
|
|
|
|
|
- , SUM(CASE WHEN GB = 4 THEN CNT ELSE 0 END) AS CNT_4
|
|
|
|
|
- , SUM(CASE WHEN GB = 3 THEN CNT ELSE 0 END) AS CNT_3
|
|
|
|
|
- , SUM(CASE WHEN GB = 2 THEN CNT ELSE 0 END) AS CNT_2
|
|
|
|
|
- , SUM(CASE WHEN GB = 1 THEN CNT ELSE 0 END) AS CNT_1
|
|
|
|
|
- , SUM(CNT) AS TOT_CNT
|
|
|
|
|
- FROM (
|
|
|
|
|
- -- 1년
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 5 AS GB -- 1년 ~
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 YEAR ), '%Y%m%d%H%i%s') -- now() 수정 : 조회시점의 시간까지만. ex) 2019년9월25일15시 조회 -> 20210925150000
|
|
|
|
|
- -- 12개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 4 AS GB -- 9개월~12개월
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 YEAR ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -9 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- -- 9개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 3 AS GB -- 6개월~9개월
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -9 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- -- 6개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 2 AS GB -- 3개월~6개월
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- -- 3개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 1 AS GB -- ~3개월
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT < DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
|
|
|
|
|
- ) Z
|
|
|
|
|
- ) X
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 미로그인현황 회원리스트 -->
|
|
|
|
|
- <select id="getCustomerUnloginInfoList" parameterType="Statistics" resultType="paramMap">
|
|
|
|
|
- /* TsaStatistics.getCustomerUnloginInfoList */
|
|
|
|
|
- SELECT (
|
|
|
|
|
- SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
- THEN A.CUST_ID
|
|
|
|
|
- ELSE CONCAT(LEFT(A.CUST_ID, 3), REPEAT('*', CHAR_LENGTH(A.CUST_ID) - 3 ) )
|
|
|
|
|
- END
|
|
|
|
|
- FROM TB_USER
|
|
|
|
|
- WHERE USER_NO = #{regNo}
|
|
|
|
|
- ) AS CUST_ID
|
|
|
|
|
- , (
|
|
|
|
|
- SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
- THEN A.CUST_NM
|
|
|
|
|
- ELSE CONCAT(LEFT(A.CUST_NM, 1), REPEAT('*', CHAR_LENGTH(A.CUST_NM) - 1 ) )
|
|
|
|
|
- END
|
|
|
|
|
- FROM TB_USER
|
|
|
|
|
- WHERE USER_NO = #{regNo}
|
|
|
|
|
- ) AS CUST_NM
|
|
|
|
|
- , (
|
|
|
|
|
- SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
- THEN A.CELL_PHNNO
|
|
|
|
|
- ELSE CONCAT(substr(A.CELL_PHNNO, 1, 4), '****', substr(A.CELL_PHNNO, 9, 13))
|
|
|
|
|
- END
|
|
|
|
|
- FROM TB_USER
|
|
|
|
|
- WHERE USER_NO = #{regNo}
|
|
|
|
|
- ) AS CELL_PHNNO
|
|
|
|
|
- , (
|
|
|
|
|
- SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
- THEN A.EMAIL
|
|
|
|
|
- ELSE CONCAT(LEFT(A.EMAIL, 2), REPEAT('*', instr(A.EMAIL, '@') - 3), SUBSTRING(A.EMAIL, instr(EMAIL, '@'), LENGTH(A.EMAIL)))
|
|
|
|
|
- END
|
|
|
|
|
- FROM TB_USER
|
|
|
|
|
- WHERE USER_NO = #{regNo}
|
|
|
|
|
- ) AS EMAIL
|
|
|
|
|
- , MONTHS
|
|
|
|
|
- , BIRTH_YM
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT CUST_ID
|
|
|
|
|
- , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
- , TIMESTAMPDIFF(MONTH, LOGIN_LDT, NOW()) AS MONTHS
|
|
|
|
|
- , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
- THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
- ELSE CELL_PHNNO
|
|
|
|
|
- END AS CELL_PHNNO
|
|
|
|
|
- , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
- , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT <![CDATA[ < ]]> DATE_FORMAT(STR_TO_DATE(DATE_FORMAT(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), '%Y%m%d%H'), '%Y%m%d%H'), '%Y-%m-%d %H:%i:%s') -- now() 수정 : 조회시점의 시간까지만. ex) 2019년9월25일15시 조회 -> 20210925150000
|
|
|
|
|
- ) A
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 마케팅수신동의현황 -->
|
|
|
|
|
- <select id="getCustomerMarketingList" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getCustomerMarketingList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- X.*
|
|
|
|
|
- , ROUND(CNT_4 / TOT_CNT * 100) AS PER_CNT_4
|
|
|
|
|
- , ROUND(CNT_3 / TOT_CNT * 100) AS PER_CNT_3
|
|
|
|
|
- , ROUND(CNT_2 / TOT_CNT * 100) AS PER_CNT_2
|
|
|
|
|
- , ROUND(CNT_1 / TOT_CNT * 100) AS PER_CNT_1
|
|
|
|
|
- FROM (
|
|
|
|
|
- SELECT SUM(CASE WHEN GB = 4 THEN CNT ELSE 0 END) AS CNT_4
|
|
|
|
|
- , SUM(CASE WHEN GB = 3 THEN CNT ELSE 0 END) AS CNT_3
|
|
|
|
|
- , SUM(CASE WHEN GB = 2 THEN CNT ELSE 0 END) AS CNT_2
|
|
|
|
|
- , SUM(CASE WHEN GB = 1 THEN CNT ELSE 0 END) AS CNT_1
|
|
|
|
|
- , SUM(CNT) AS TOT_CNT
|
|
|
|
|
- FROM (
|
|
|
|
|
- -- SMS
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 4 AS GB
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND SMS_AGREE_YN = 'Y'
|
|
|
|
|
- -- EMAIL
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 3 AS GB
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND EMAIL_AGREE_YN = 'Y'
|
|
|
|
|
- -- 푸쉬
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 2 AS GB
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND APP_AGREE_YN = 'Y'
|
|
|
|
|
- -- 미동의
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 1 AS GB
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND SMS_AGREE_YN = 'N'
|
|
|
|
|
- AND EMAIL_AGREE_YN = 'N'
|
|
|
|
|
- AND APP_AGREE_YN = 'N'
|
|
|
|
|
- ) Z
|
|
|
|
|
- ) X
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 휴면전환 잔여일별현황 -->
|
|
|
|
|
- <select id="getCustomerDormRemainList" resultType="Statistics">
|
|
|
|
|
- /* TsaStatistics.getCustomerDormRemainList */
|
|
|
|
|
- SELECT
|
|
|
|
|
- SUM(CASE WHEN GB = 4 THEN CNT ELSE 0 END) AS CNT_4 -- 12개월
|
|
|
|
|
- , SUM(CASE WHEN GB = 3 THEN CNT ELSE 0 END) AS CNT_3 -- 9개월
|
|
|
|
|
- , SUM(CASE WHEN GB = 2 THEN CNT ELSE 0 END) AS CNT_2 -- 6개월
|
|
|
|
|
- , SUM(CASE WHEN GB = 1 THEN CNT ELSE 0 END) AS CNT_1 -- 9개월
|
|
|
|
|
- FROM (
|
|
|
|
|
- -- 12개월
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 4 AS GB -- 12개월
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 DAY ), '%Y%m%d%H%i%s') -- now() 수정 : 조회시점의 시간까지만. ex) 2019년9월25일15시 조회 -> 20210925150000
|
|
|
|
|
- -- 9개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 3 AS GB -- 9개월
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 DAY ), '%Y%m%d%H%i%s')
|
|
|
|
|
- -- 6개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 2 AS GB -- 6개월
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- -- 3개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT COUNT(1) AS CNT
|
|
|
|
|
- , 1 AS GB -- ~3개월
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -9 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- ) Z
|
|
|
|
|
- </select>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 휴면전환 잔여일별현황 회원리스트 -->
|
|
|
|
|
- <select id="getCustomerDormRemainInfoList" parameterType="Statistics" resultType="paramMap">
|
|
|
|
|
- /* TsaStatistics.getCustomerDormRemainInfoList */
|
|
|
|
|
- SELECT GB
|
|
|
|
|
- , BIRTH_YM
|
|
|
|
|
- , (
|
|
|
|
|
- SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
- THEN A.CUST_ID
|
|
|
|
|
- ELSE CONCAT(LEFT(A.CUST_ID, 3), REPEAT('*', CHAR_LENGTH(A.CUST_ID) - 3 ) )
|
|
|
|
|
- END
|
|
|
|
|
- FROM TB_USER
|
|
|
|
|
- WHERE USER_NO = #{regNo}
|
|
|
|
|
- ) AS CUST_ID
|
|
|
|
|
- , (
|
|
|
|
|
- SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
- THEN A.CUST_NM
|
|
|
|
|
- ELSE CONCAT(LEFT(A.CUST_NM, 1), REPEAT('*', CHAR_LENGTH(A.CUST_NM) - 1 ) )
|
|
|
|
|
- END
|
|
|
|
|
- FROM TB_USER
|
|
|
|
|
- WHERE USER_NO = #{regNo}
|
|
|
|
|
- ) AS CUST_NM
|
|
|
|
|
- , (
|
|
|
|
|
- SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
- THEN A.CELL_PHNNO
|
|
|
|
|
- ELSE CONCAT(substr(A.CELL_PHNNO, 1, 4), '****', substr(A.CELL_PHNNO, 9, 13))
|
|
|
|
|
- END
|
|
|
|
|
- FROM TB_USER
|
|
|
|
|
- WHERE USER_NO = #{regNo}
|
|
|
|
|
- ) AS CELL_PHNNO
|
|
|
|
|
- , (
|
|
|
|
|
- SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
- THEN A.EMAIL
|
|
|
|
|
- ELSE CONCAT(LEFT(A.EMAIL, 2), REPEAT('*', instr(A.EMAIL, '@') - 3), SUBSTRING(A.EMAIL, instr(EMAIL, '@'), LENGTH(A.EMAIL)))
|
|
|
|
|
- END
|
|
|
|
|
- FROM TB_USER
|
|
|
|
|
- WHERE USER_NO = #{regNo}
|
|
|
|
|
- ) AS EMAIL
|
|
|
|
|
- FROM (
|
|
|
|
|
- -- 12개월
|
|
|
|
|
- SELECT '12개월' AS GB -- 12개월
|
|
|
|
|
- , CUST_ID
|
|
|
|
|
- , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
- , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
- THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
- ELSE CELL_PHNNO
|
|
|
|
|
- END AS CELL_PHNNO
|
|
|
|
|
- , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
- , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT > DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 DAY ), '%Y%m%d%H%i%s') -- now() 수정 : 조회시점의 시간까지만. ex) 2019년9월25일15시 조회 -> 20210925150000
|
|
|
|
|
- -- 9개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT '9개월' AS GB -- 9개월
|
|
|
|
|
- , CUST_ID
|
|
|
|
|
- , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
- , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
- THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
- ELSE CELL_PHNNO
|
|
|
|
|
- END AS CELL_PHNNO
|
|
|
|
|
- , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
- , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT <![CDATA[ < ]]> DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 DAY ), '%Y%m%d%H%i%s')
|
|
|
|
|
- -- 6개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT '6개월' AS GB -- 6개월
|
|
|
|
|
- , CUST_ID
|
|
|
|
|
- , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
- , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
- THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
- ELSE CELL_PHNNO
|
|
|
|
|
- END AS CELL_PHNNO
|
|
|
|
|
- , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
- , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT <![CDATA[ < ]]> DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- -- 3개월
|
|
|
|
|
- UNION ALL
|
|
|
|
|
- SELECT '3개월' AS GB -- ~3개월
|
|
|
|
|
- , CUST_ID
|
|
|
|
|
- , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
- , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
- THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
- ELSE CELL_PHNNO
|
|
|
|
|
- END AS CELL_PHNNO
|
|
|
|
|
- , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
- , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
- FROM TB_CUSTOMER
|
|
|
|
|
- WHERE CUST_NO > 0
|
|
|
|
|
- AND CUST_STAT = 'G104_10'
|
|
|
|
|
- AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -9 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- AND LOGIN_LDT <![CDATA[ < ]]> DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
- ) A
|
|
|
|
|
- </select>
|
|
|
|
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
|
|
|
+<mapper namespace="com.style24.admin.biz.dao.TsaStatisticsDao">
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 일일거래내역 -->
|
|
|
|
|
+ <select id="getDailyTradingList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getDailyTradingList */
|
|
|
|
|
+ SELECT ODIH.ORD_NO /*주문번호*/
|
|
|
|
|
+ , ODIH.ORD_DTL_NO /*주문상세번호*/
|
|
|
|
|
+ , ODIH.SELL_GB /*판매구분*/
|
|
|
|
|
+ , ODIH.MALL_GB /*몰구분*/
|
|
|
|
|
+ , ODIH.MALL_GB_NM /*몰구분명*/
|
|
|
|
|
+ , ODIH.EXTMALL_ORDER_ID /*제휴몰주문번호*/
|
|
|
|
|
+ , ODIH.EXTMALL_ID /*제휴몰ID*/
|
|
|
|
|
+ , ODIH.EXTMALL_NM /*제휴몰명*/
|
|
|
|
|
+ , ODIH.AF_LINK_CD /*제휴링크코드*/
|
|
|
|
|
+ , ODIH.AF_LINK_NM /*제휴링크명*/
|
|
|
|
|
+ , ODIH.AF_CHANNEL /*제휴채널코드*/
|
|
|
|
|
+ , ODIH.AF_CHANNEL_NM /*제휴채널명*/
|
|
|
|
|
+ , ODIH.DISTRIBUTION_GB /*유통구분*/
|
|
|
|
|
+ , ODIH.DISTRIBUTION_GB_NM /*유통구분명*/
|
|
|
|
|
+ , ODIH.SUPPLY_COMP_CD /*공급업체코드*/
|
|
|
|
|
+ , ODIH.SUPPLY_COMP_NM /*공급업체명*/
|
|
|
|
|
+ , ODIH.SUPPLY_VENDOR_CD /*공급벤더코드*/
|
|
|
|
|
+ , ODIH.SUPPLY_VENDOR_NM /*공급벤더명*/
|
|
|
|
|
+ , ODIH.ORD_DT /*주문일시*/
|
|
|
|
|
+ , ODIH.OCCUR_DT /*발생일시*/
|
|
|
|
|
+ , ODIH.BRAND_CD /*브랜드코드*/
|
|
|
|
|
+ , ODIH.BRAND_ENM /*브랜드명*/
|
|
|
|
|
+ , ODIH.GOODS_CD /*상품코드*/
|
|
|
|
|
+ , ODIH.GOODS_NM /*상품명*/
|
|
|
|
|
+ , ODIH.ITEM_CD /*단품코드*/
|
|
|
|
|
+ , ODIH.OPT_CD1 /*옵션코드1*/
|
|
|
|
|
+ , ODIH.OPT_CD2 /*옵션코드2*/
|
|
|
|
|
+ , ODIH.ITEMKIND_CD /*품목코드*/
|
|
|
|
|
+ , ODIH.ITEMKIND_NM /*품목명*/
|
|
|
|
|
+ , SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',1) AS ITEMKIND_NM1 /*품목명1*/
|
|
|
|
|
+ , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',1),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',2),'>',-1) THEN
|
|
|
|
|
+ NULL
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',2),'>',-1)
|
|
|
|
|
+ END AS ITEMKIND_NM2 /*품목명2*/
|
|
|
|
|
+ , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',2),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',3),'>',-1) THEN
|
|
|
|
|
+ NULL
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',3),'>',-1)
|
|
|
|
|
+ END AS ITEMKIND_NM3 /*품목명3*/
|
|
|
|
|
+ , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',3),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',4),'>',-1) THEN
|
|
|
|
|
+ ''
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',4),'>',-1)
|
|
|
|
|
+ END AS ITEMKIND_NM4 /*품목명4*/
|
|
|
|
|
+ , ODIH.MALL_PRICE /*몰판매가*/
|
|
|
|
|
+ , ODIH.SELL_PRICE /*판매가*/
|
|
|
|
|
+ , ODIH.SELL_QTY /*판매수량*/
|
|
|
|
|
+ , ODIH.SELL_AMT /*판매금액(ORD_AMT에는 CPN1_DC_AMT가 빠진 금액이 들어가 있음)*/
|
|
|
|
|
+ , ODIH.CPN1_DC_AMT /*즉시사용쿠폰금액*/
|
|
|
|
|
+ , ODIH.GOODS_CPN_DC_AMT /*상품쿠폰사용금액*/
|
|
|
|
|
+ , ODIH.CART_CPN_DC_AMT /*주문서쿠폰사용금액*/
|
|
|
|
|
+ , ODIH.PNT_DC_AMT /*포인트사용금액*/
|
|
|
|
|
+ , ODIH.TMTB_DC_AMT /*다다익선할인금액*/
|
|
|
|
|
+ , ODIH.SELF_TMTB_DC_AMT /*자사다다익선분담액*/
|
|
|
|
|
+ , ODIH.SUPPLY_COMP_TMTB_DC_AMT /*입점다다익선분담액*/
|
|
|
|
|
+ , ODIH.GFCD_USE_AMT /*상품권사용금액*/
|
|
|
|
|
+ , ODIH.SELF_CPN_DC_AMT /*자사쿠폰분담액*/
|
|
|
|
|
+ , ODIH.SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
|
|
|
|
|
+ , CASE WHEN ODIH.SELL_QTY = 0 THEN 0
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ (ODIH.SELL_AMT
|
|
|
|
|
+ - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT )
|
|
|
|
|
+ - ODIH.TMTB_DC_AMT
|
|
|
|
|
+ ) / ODIH.SELL_QTY
|
|
|
|
|
+ END AS REAL_SELL_PRICE /*실판매가 /주문서쿠폰제외*/
|
|
|
|
|
+ , ODIH.SELL_AMT
|
|
|
|
|
+ - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT )
|
|
|
|
|
+ - ODIH.TMTB_DC_AMT AS REAL_SELL_AMT /*실판매금액(=상품총액. 쿠폰과 다다익선만 차감. 상품권과 포인트는 포함) /주문서쿠폰제외*/
|
|
|
|
|
+ , ODIH.SELL_FEE_RATE /*판매수수료율*/
|
|
|
|
|
+ , ROUND(ODIH.SELL_AMT * (ODIH.SELL_FEE_RATE / 100),0) AS SELL_FEE_AMT /*수수료*/
|
|
|
|
|
+ , ODIH.MD_NM /*담당MD*/
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT ODIH.ORD_DTL_ITEM_HST_SQ /*주문상세단품이력일련번호*/
|
|
|
|
|
+ , ODIH.ORD_NO /*주문번호*/
|
|
|
|
|
+ , ODIH.ORD_DTL_NO /*주문상세번호*/
|
|
|
|
|
+ , CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN '판매'
|
|
|
|
|
+ WHEN ODIH.ORD_DTL_STAT = 'G720_30' THEN '취소'
|
|
|
|
|
+ WHEN ODIH.ORD_DTL_STAT = 'G720_40' THEN '품절취소'
|
|
|
|
|
+ WHEN ODIH.ORD_DTL_STAT = 'G720_50' THEN '반품'
|
|
|
|
|
+ WHEN ODIH.ORD_DTL_STAT = 'G720_60' THEN '교환'
|
|
|
|
|
+ END AS SELL_GB /*판매구분*/
|
|
|
|
|
+ , O.MALL_GB /*몰구분*/
|
|
|
|
|
+ , FN_GET_CODE_NM('G011',O.MALL_GB) AS MALL_GB_NM /*몰구분명*/
|
|
|
|
|
+ , OD.EXTMALL_ORDER_ID /*제휴몰주문번호*/
|
|
|
|
|
+ , OD.EXTMALL_ID /*제휴몰ID*/
|
|
|
|
|
+ , E.EXTMALL_NM /*제휴몰명*/
|
|
|
|
|
+ , OD.AF_LINK_CD /*제휴링크코드*/
|
|
|
|
|
+ , AL.AF_LINK_NM /*제휴링크명*/
|
|
|
|
|
+ , AL.AF_CHANNEL /*제휴채널코드*/
|
|
|
|
|
+ , FN_GET_CODE_NM('G053',AL.AF_CHANNEL) AS AF_CHANNEL_NM /*제휴채널명*/
|
|
|
|
|
+ , SC.DISTRIBUTION_GB /*유통구분*/
|
|
|
|
|
+ , FN_GET_CODE_NM('G065',SC.DISTRIBUTION_GB) AS DISTRIBUTION_GB_NM /*유통구분명*/
|
|
|
|
|
+ , OD.SUPPLY_COMP_CD /*공급업체코드*/
|
|
|
|
|
+ , SC.SUPPLY_COMP_NM /*공급업체명*/
|
|
|
|
|
+ , SC.SUPPLY_VENDOR_CD /*공급벤더코드*/
|
|
|
|
|
+ , SV.SUPPLY_VENDOR_NM /*공급벤더명*/
|
|
|
|
|
+ , DATE_FORMAT(O.PAY_DT,'%Y-%m-%d %H:%i:%S') AS ORD_DT /*주문일시*/
|
|
|
|
|
+ , DATE_FORMAT(ODIH.REG_DT,'%Y-%m-%d %H:%i:%S') AS OCCUR_DT /*발생일시*/
|
|
|
|
|
+ , G.BRAND_CD /*브랜드코드*/
|
|
|
|
|
+ , B.BRAND_ENM /*브랜드명*/
|
|
|
|
|
+ , OD.GOODS_CD /*상품코드*/
|
|
|
|
|
+ , G.GOODS_NM /*상품명*/
|
|
|
|
|
+ , ODIH.ITEM_CD /*단품코드*/
|
|
|
|
|
+ , ODIH.OPT_CD1 /*옵션코드1*/
|
|
|
|
|
+ , ODIH.OPT_CD2 /*옵션코드2*/
|
|
|
|
|
+ , G.ITEMKIND_CD /*품목코드*/
|
|
|
|
|
+ , I.ITEMKIND_NM /*품목명*/
|
|
|
|
|
+ , ODIH.ITEM_PRICE AS MALL_PRICE /*몰판매가*/
|
|
|
|
|
+ , CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
|
|
|
|
|
+ IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ ODIH.ITEM_PRICE
|
|
|
|
|
+ END AS SELL_PRICE /*판매가(제휴몰정산가적용)*/
|
|
|
|
|
+ , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN 1 ELSE -1 END)
|
|
|
|
|
+ *
|
|
|
|
|
+ CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10'/*판매-결제완료*/ THEN
|
|
|
|
|
+ ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY
|
|
|
|
|
+ ELSE /*환입-반품완료,환입-교환완료*/
|
|
|
|
|
+ ODIH.CNCL_RTN_QTY
|
|
|
|
|
+ END AS SIGNED INT) AS SELL_QTY /*판매수량*/
|
|
|
|
|
+ , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN 1 ELSE -1 END)
|
|
|
|
|
+ *
|
|
|
|
|
+ CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10'/*판매-결제완료*/ THEN
|
|
|
|
|
+ ((ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY) * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
|
|
|
|
|
+ IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ ODIH.ITEM_PRICE
|
|
|
|
|
+ END))
|
|
|
|
|
+ ELSE /*환입-반품완료,환입-교환완료*/
|
|
|
|
|
+ (ODIH.CNCL_RTN_QTY * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
|
|
|
|
|
+ IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ ODIH.ITEM_PRICE
|
|
|
|
|
+ END))
|
|
|
|
|
+ END AS SIGNED INT) AS SELL_AMT /*판매금액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.CPN1_DC_AMT AS CPN1_DC_AMT /*즉시사용쿠폰금액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * CASE WHEN CC2.CPN_ID in (59,132) THEN 0 ELSE ODIH.GOODS_CPN_DC_AMT END AS GOODS_CPN_DC_AMT /*상품쿠폰사용금액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.CART_CPN_DC_AMT AS CART_CPN_DC_AMT /*주문서쿠폰사용금액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.PNT_DC_AMT AS PNT_DC_AMT /*포인트사용금액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * (ODIH.TMTB1_DC_AMT + ODIH.TMTB2_DC_AMT) AS TMTB_DC_AMT /*다다익선할인금액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
|
|
|
|
|
+ (((100 - IFNULL(TB1.TMTB_BURDEN_RATE,0)) / 100) * ODIH.TMTB1_DC_AMT
|
|
|
|
|
+ + ((100 - IFNULL(TB2.TMTB_BURDEN_RATE,0)) / 100) * ODIH.TMTB2_DC_AMT) AS SELF_TMTB_DC_AMT /*자사다다익선분담액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
|
|
|
|
|
+ ((IFNULL(TB1.TMTB_BURDEN_RATE,0) / 100) * ODIH.TMTB1_DC_AMT
|
|
|
|
|
+ + (IFNULL(TB2.TMTB_BURDEN_RATE,0) / 100) * ODIH.TMTB2_DC_AMT) AS SUPPLY_COMP_TMTB_DC_AMT /*입점다다익선분담액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.GFCD_USE_AMT AS GFCD_USE_AMT /*상품권사용금액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
|
|
|
|
|
+ (((100 - IFNULL(CB1.BURDEN_RATE,0)) / 100) * ODIH.CPN1_DC_AMT
|
|
|
|
|
+ + ((100 - IFNULL(CB2.BURDEN_RATE,0)) / 100) * CASE WHEN CC2.CPN_ID in (59,132) THEN 0 ELSE ODIH.GOODS_CPN_DC_AMT END ) AS SELF_CPN_DC_AMT /*자사쿠폰분담액*/
|
|
|
|
|
+ , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
|
|
|
|
|
+ ((IFNULL(CB1.BURDEN_RATE,0) / 100) * ODIH.CPN1_DC_AMT
|
|
|
|
|
+ + (IFNULL(CB2.BURDEN_RATE,0) / 100) * ODIH.GOODS_CPN_DC_AMT) AS SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
|
|
|
|
|
+ , CASE WHEN O.MALL_GB = 'G011_10' /*자사몰*/ THEN
|
|
|
|
|
+ OD.SELL_FEE_RATE
|
|
|
|
|
+ ELSE /*제휴몰*/
|
|
|
|
|
+ IFNULL(E.SELL_FEE_RATE,0)
|
|
|
|
|
+ END AS SELL_FEE_RATE /*판매수수료율*/
|
|
|
|
|
+ , (SELECT U.USER_NM
|
|
|
|
|
+ FROM TB_BRAND_MD BM
|
|
|
|
|
+ , TB_USER U
|
|
|
|
|
+ WHERE BM.MD_NO = U.USER_NO
|
|
|
|
|
+ AND BM.BRAND_CD = G.BRAND_CD
|
|
|
|
|
+ AND BM.FORMAL_GB = G.FORMAL_GB
|
|
|
|
|
+ LIMIT 1) AS MD_NM /*담당MD*/
|
|
|
|
|
+ FROM TB_ORDER_DETAIL_ITEM_HST ODIH
|
|
|
|
|
+ INNER JOIN TB_ORDER_DETAIL OD ON ODIH.ORD_DTL_NO = OD.ORD_DTL_NO
|
|
|
|
|
+ INNER JOIN TB_ORDER O ON ODIH.ORD_NO = O.ORD_NO
|
|
|
|
|
+ INNER JOIN TB_SUPPLY_COMPANY SC ON OD.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
|
|
|
|
|
+ INNER JOIN TB_SUPPLY_VENDOR SV ON SC.SUPPLY_VENDOR_CD = SV.SUPPLY_VENDOR_CD
|
|
|
|
|
+ INNER JOIN TB_GOODS G ON OD.GOODS_CD = G.GOODS_CD
|
|
|
|
|
+ INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
|
|
|
|
|
+ INNER JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
|
|
|
|
|
+ LEFT OUTER JOIN TB_EXTMALL E ON OD.EXTMALL_ID = E.EXTMALL_ID
|
|
|
|
|
+ LEFT OUTER JOIN TB_AF_LINK AL ON OD.AF_LINK_CD = AL.AF_LINK_CD
|
|
|
|
|
+ LEFT OUTER JOIN TB_COUPON_BURDEN CB1 ON OD.CPN1_CPN_SQ = CB1.CPN_ID
|
|
|
|
|
+ AND OD.SUPPLY_COMP_CD = CB1.SUPPLY_COMP_CD
|
|
|
|
|
+ LEFT OUTER JOIN TB_CUST_COUPON CC2 ON OD.GOODS_CPN_SQ = CC2.CUST_CPN_SQ
|
|
|
|
|
+ LEFT OUTER JOIN TB_COUPON_BURDEN CB2 ON CC2.CPN_ID = CB2.CPN_ID
|
|
|
|
|
+ AND OD.SUPPLY_COMP_CD = CB2.SUPPLY_COMP_CD
|
|
|
|
|
+ LEFT OUTER JOIN TB_CUST_COUPON CC3 ON OD.CART_CPN_SQ = CC3.CUST_CPN_SQ
|
|
|
|
|
+ LEFT OUTER JOIN TB_COUPON_BURDEN CB3 ON CC3.CPN_ID = CB3.CPN_ID
|
|
|
|
|
+ AND OD.SUPPLY_COMP_CD = CB3.SUPPLY_COMP_CD
|
|
|
|
|
+ LEFT OUTER JOIN TB_TMTB_BURDEN TB1 ON OD.TMTB1_SQ = TB1.TMTB_SQ
|
|
|
|
|
+ AND OD.SUPPLY_COMP_CD = TB1.TMTB_SUPPLY_CD
|
|
|
|
|
+ LEFT OUTER JOIN TB_TMTB_BURDEN TB2 ON OD.TMTB2_SQ = TB2.TMTB_SQ
|
|
|
|
|
+ AND OD.SUPPLY_COMP_CD = TB2.TMTB_SUPPLY_CD
|
|
|
|
|
+ LEFT OUTER JOIN TB_EXTMALL_USAC_PRICE EUP ON ODIH.ORD_DTL_ITEM_HST_SQ = EUP.ORD_DTL_ITEM_HST_SQ
|
|
|
|
|
+ WHERE 1 = 1
|
|
|
|
|
+ AND ODIH.REG_DT <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND ODIH.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ AND ODIH.ORD_DTL_STAT IN ('G720_10','G720_30','G720_40','G720_50','G720_60') /*판매-결제완료,환입-취소완료,환입-품절취소,환입-반품완료,환입-교환완료*/
|
|
|
|
|
+ ) ODIH
|
|
|
|
|
+ ORDER BY ODIH.ORD_DTL_ITEM_HST_SQ
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 일자별주문 목록 -->
|
|
|
|
|
+ <select id="getDailyOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getDailyOrderList */
|
|
|
|
|
+ SELECT SUM(SOD.SELF_AMT + SOD.CHANNEL_AMT + SOD.EXTMALL_AMT) AS TOT_ORD_AMT /*매출액*/
|
|
|
|
|
+ , IFNULL((SELECT SUM(SELF_AMT + CHANNEL_AMT + EXTMALL_AMT)
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY
|
|
|
|
|
+ WHERE 1 = 1
|
|
|
|
|
+ AND DAY <![CDATA[>=]]> DATE_ADD(STR_TO_DATE(#{startDt},'%Y-%m-%d'), INTERVAL -1 YEAR)
|
|
|
|
|
+ AND DAY <![CDATA[<]]> DATE_ADD(DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR)
|
|
|
|
|
+ AND (
|
|
|
|
|
+ 1 = 1
|
|
|
|
|
+ <if test='frontGbP != null and frontGbP != ""'>
|
|
|
|
|
+ OR FRONT_GB = 'P'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='frontGbM != null and frontGbM != ""'>
|
|
|
|
|
+ OR FRONT_GB = 'M'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='frontGbA != null and frontGbA != ""'>
|
|
|
|
|
+ OR FRONT_GB = 'A'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ )
|
|
|
|
|
+ <if test='mallGb != null and mallGb != ""'>
|
|
|
|
|
+ AND IFNULL(EXTMALL_ID,'') != '' /*제휴몰만*/
|
|
|
|
|
+ <if test='multiExtmallId != null and multiExtmallId != ""'>
|
|
|
|
|
+ AND EXTMALL_ID IN
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ AND (
|
|
|
|
|
+ 1 = 1
|
|
|
|
|
+ <if test='distributionGbWms != null and distributionGbWms != ""'>
|
|
|
|
|
+ OR DISTRIBUTION_GB = 'WMS'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='distributionGbScm != null and distributionGbScm != ""'>
|
|
|
|
|
+ OR DISTRIBUTION_GB = 'SCM'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ )
|
|
|
|
|
+ <if test='multiSupplyCompCd != null and multiSupplyCompCd != ""'>
|
|
|
|
|
+ AND SUPPLY_COMP_CD IN
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='multiAfLinkCd != null and multiAfLinkCd != ""'>
|
|
|
|
|
+ AND AF_LINK_CD IN
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='multiBrandCd != null and multiBrandCd != ""'>
|
|
|
|
|
+ AND BRAND_CD IN
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='multiItemkindCd != null and multiItemkindCd != ""'>
|
|
|
|
|
+ AND ITEMKIND_CD IN
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ ),0) AS YOY_TOT_ORD_AMT /*전년동기대비매출액*/
|
|
|
|
|
+ , SUM(SOD.SELF_AMT) AS SELF_AMT /*자사직방문매출액*/
|
|
|
|
|
+ , SUM(SOD.CHANNEL_AMT) AS CHANNEL_AMT /*채널매출액*/
|
|
|
|
|
+ , SUM(SOD.EXTMALL_AMT) AS EXTMALL_AMT /*제휴몰매출액*/
|
|
|
|
|
+ , SUM(SOD.CNCL_AMT + SOD.RTN_AMT) AS CNCL_AMT /*취/반품액*/
|
|
|
|
|
+ , SUM(SOD.ORD_CNT) AS ORD_CNT /*주문건수*/
|
|
|
|
|
+ , SUM(SOD.SELL_QTY) AS SELL_QTY /*판매수량*/
|
|
|
|
|
+ , SUM(SOD.CNCL_QTY + SOD.RTN_QTY) AS CNCL_QTY /*취/반품수량*/
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ , CONCAT(MONTH(SOD.DAY), '월 ', WEEK(SOD.DAY,5) - WEEK(DATE_SUB(SOD.DAY, INTERVAL DAYOFMONTH(SOD.DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ , DATE_FORMAT(SOD.DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ , DATE_FORMAT(SOD.DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY SOD
|
|
|
|
|
+ WHERE 1 = 1
|
|
|
|
|
+ AND SOD.DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND SOD.DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ AND (
|
|
|
|
|
+ 1 = 1
|
|
|
|
|
+ <if test='frontGbP != null and frontGbP != ""'>
|
|
|
|
|
+ OR SOD.FRONT_GB = 'P'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='frontGbM != null and frontGbM != ""'>
|
|
|
|
|
+ OR SOD.FRONT_GB = 'M'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='frontGbA != null and frontGbA != ""'>
|
|
|
|
|
+ OR SOD.FRONT_GB = 'A'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ )
|
|
|
|
|
+ <if test='mallGb != null and mallGb != ""'>
|
|
|
|
|
+ AND IFNULL(SOD.EXTMALL_ID,'') != '' /*제휴몰만*/
|
|
|
|
|
+ <if test='multiExtmallId != null and multiExtmallId != ""'>
|
|
|
|
|
+ AND SOD.EXTMALL_ID IN
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ AND (
|
|
|
|
|
+ 1 = 1
|
|
|
|
|
+ <if test='distributionGbWms != null and distributionGbWms != ""'>
|
|
|
|
|
+ OR SOD.DISTRIBUTION_GB = 'WMS'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='distributionGbScm != null and distributionGbScm != ""'>
|
|
|
|
|
+ OR SOD.DISTRIBUTION_GB = 'SCM'
|
|
|
|
|
+ </if>
|
|
|
|
|
+ )
|
|
|
|
|
+ <if test='multiSupplyCompCd != null and multiSupplyCompCd != ""'>
|
|
|
|
|
+ AND SOD.SUPPLY_COMP_CD IN
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='multiAfLinkCd != null and multiAfLinkCd != ""'>
|
|
|
|
|
+ AND SOD.AF_LINK_CD IN
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='multiBrandCd != null and multiBrandCd != ""'>
|
|
|
|
|
+ AND SOD.BRAND_CD IN
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test='multiItemkindCd != null and multiItemkindCd != ""'>
|
|
|
|
|
+ AND SOD.ITEMKIND_CD IN
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(SOD.DAY), '월 ', WEEK(SOD.DAY,5) - WEEK(DATE_SUB(SOD.DAY, INTERVAL DAYOFMONTH(SOD.DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(SOD.DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(SOD.DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 상품별 주문 목록 -->
|
|
|
|
|
+ <select id="getGoodsOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getGoodsOrderList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ FN_GET_CODE_NM('G009',A.FORMAL_GB) AS FORMAL_GB -- 정상이월구분
|
|
|
|
|
+ , A.GOODS_CD -- 상품코드
|
|
|
|
|
+ , B.GOODS_NM -- 상품명
|
|
|
|
|
+ , SUM(C.STOCK_QTY) AS STOCK_QTY -- 현재고수량
|
|
|
|
|
+ , SUM(A.SELL_QTY) AS SELL_QTY -- 판매수량
|
|
|
|
|
+ , SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.GOODS_CPN_AMT - A.TMTB_AMT - A.CART_CPN_AMT) AS PAY_AMT -- 상품당결제액
|
|
|
|
|
+ , SUM(A.ORD_AMT) AS ORD_AMT -- 매출액
|
|
|
|
|
+ , SUM(A.GOODS_CPN_AMT) AS GOODS_CPN_AMT -- 즉시/주문상품쿠폰
|
|
|
|
|
+ , SUM(A.TMTB_AMT) AS TMTB_AMT -- 다다익선
|
|
|
|
|
+ , SUM(A.CART_CPN_AMT) AS CART_CPN_AMT -- 장바구니쿠폰
|
|
|
|
|
+ , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY -- 취/환불수량
|
|
|
|
|
+ , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT -- 취/환불액
|
|
|
|
|
+ , SUM(A.SAVE_PNT_AMT) AS SAVE_PNT_AMT -- 지급포인트
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY A, TB_GOODS B, TB_GOODS_STOCK C
|
|
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
|
|
+ AND B.GOODS_CD = C.GOODS_CD
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ AND A.DAY >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND A.DAY < DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiExtmallId != null">
|
|
|
|
|
+ /* 제휴몰 */
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAfLinkCd != null">
|
|
|
|
|
+ /* 채널 */
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiGoodsCd != null">
|
|
|
|
|
+ /* 상품코드 */
|
|
|
|
|
+ <foreach collection="multiGoodsCd" item="item" index="index" open="AND (" close=")" separator="OR">A.GOODS_CD LIKE CONCAT('%', #{item}, '%')</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND B.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY A.FORMAL_GB, A.GOODS_CD, B.GOODS_NM, B.SELF_GOODS_YN
|
|
|
|
|
+ ORDER BY B.SELF_GOODS_YN DESC, A.FORMAL_GB, A.GOODS_CD
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 제휴몰 주문 목록 조회 -->
|
|
|
|
|
+ <select id="getExtmallOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getExtmallOrderList */
|
|
|
|
|
+ SELECT EXTMALL_NM
|
|
|
|
|
+ , TOT_AMT
|
|
|
|
|
+ , SELL_QTY
|
|
|
|
|
+ , EXTMALL_AMT
|
|
|
|
|
+ , CNCL_QTY
|
|
|
|
|
+ , CNCL_AMT
|
|
|
|
|
+ , REAL_ORD_AMT
|
|
|
|
|
+ , SELL_FEE_RATE
|
|
|
|
|
+ , EX_USAC_AMT
|
|
|
|
|
+ , YOY_TOT_ORD_AMT
|
|
|
|
|
+ , ROUND(TOT_AMT / (CASE WHEN TOT_AMT > 0 AND YOY_TOT_ORD_AMT = 0 THEN 1 ELSE YOY_TOT_ORD_AMT END) * 100 - 100,1) AS YOY_RATE /*증가율*/
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ (SELECT EXTMALL_NM FROM TB_EXTMALL X WHERE X.EXTMALL_ID = A.EXTMALL_ID LIMIT 1) AS EXTMALL_NM
|
|
|
|
|
+ , SUM(A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT /* 총매출 */
|
|
|
|
|
+ , SUM(A.SELL_QTY) AS SELL_QTY /* 판매수량 */
|
|
|
|
|
+ , SUM(A.EXTMALL_AMT) AS EXTMALL_AMT
|
|
|
|
|
+ , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY /*취/반품수량*/
|
|
|
|
|
+ , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT /*취/반품액*/
|
|
|
|
|
+ , SUM(A.REAL_ORD_AMT) AS REAL_ORD_AMT /*실결제액 */
|
|
|
|
|
+ , (SELECT SELL_FEE_RATE FROM TB_EXTMALL X WHERE X.EXTMALL_ID = A.EXTMALL_ID LIMIT 1) AS SELL_FEE_RATE /*수수료율*/
|
|
|
|
|
+ , (SUM(A.REAL_ORD_AMT) * (1 - (SELECT SELL_FEE_RATE FROM TB_EXTMALL X WHERE X.EXTMALL_ID = A.EXTMALL_ID LIMIT 1) / 100)) AS EX_USAC_AMT
|
|
|
|
|
+ , IFNULL((SELECT SUM(X.EXTMALL_AMT - X.CNCL_AMT - X.RTN_AMT)
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY X
|
|
|
|
|
+ WHERE 1 = 1
|
|
|
|
|
+ AND X.EXTMALL_ID = A.EXTMALL_ID
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ AND X.DAY >= DATE_ADD(STR_TO_DATE(#{startDt},'%Y-%m-%d'), INTERVAL -1 YEAR)
|
|
|
|
|
+ AND X.DAY < DATE_ADD(DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND X.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND X.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND X.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAfLinkCd != null">
|
|
|
|
|
+ /* 채널 */
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="AND X.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND X.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND X.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND X.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ ),0) AS YOY_TOT_ORD_AMT /*전년동기대비매출액*/
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY A
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ AND A.EXTMALL_ID IS NOT NULL
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ AND A.DAY >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND A.DAY < DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAfLinkCd != null">
|
|
|
|
|
+ /* 채널 */
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY A.EXTMALL_ID
|
|
|
|
|
+ ) TAB
|
|
|
|
|
+ ORDER BY TAB.EXTMALL_NM
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 채널 주문목록 조회 -->
|
|
|
|
|
+ <select id="getChannelOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getChannelOrderList */
|
|
|
|
|
+ SELECT AF_LINK_CD
|
|
|
|
|
+ , AF_LINK_NM
|
|
|
|
|
+ , CHANNEL_AMT
|
|
|
|
|
+ , TOT_AMT
|
|
|
|
|
+ , SELL_QTY
|
|
|
|
|
+ , CNCL_QTY
|
|
|
|
|
+ , CNCL_AMT
|
|
|
|
|
+ , REAL_ORD_AMT
|
|
|
|
|
+ , SELL_FEE_RATE
|
|
|
|
|
+ , EX_USAC_AMT
|
|
|
|
|
+ , YOY_TOT_ORD_AMT
|
|
|
|
|
+ , ROUND(TOT_AMT / (CASE WHEN TOT_AMT >0 AND YOY_TOT_ORD_AMT = 0 THEN 1 ELSE YOY_TOT_ORD_AMT END) * 100 - 100,1) AS YOY_RATE /*증가율*/
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ A.AF_LINK_CD
|
|
|
|
|
+ , B.AF_LINK_NM
|
|
|
|
|
+ , SUM(A.CHANNEL_AMT) AS CHANNEL_AMT
|
|
|
|
|
+ , SUM(A.CHANNEL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT /* 총매출 */
|
|
|
|
|
+ , SUM(A.SELL_QTY) AS SELL_QTY /* 판매수량 */
|
|
|
|
|
+ , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY /* 취/반품수량 */
|
|
|
|
|
+ , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT /* 취/반품액 */
|
|
|
|
|
+ , SUM(A.REAL_ORD_AMT) AS REAL_ORD_AMT /* 실결제금액 */
|
|
|
|
|
+ , (SELECT FEE_RATE FROM TB_AF_LINK X WHERE X.AF_LINK_CD = A.AF_LINK_CD) AS SELL_FEE_RATE
|
|
|
|
|
+ , (SUM(A.REAL_ORD_AMT) * (1 - (SELECT FEE_RATE FROM TB_AF_LINK X WHERE X.AF_LINK_CD = A.AF_LINK_CD) / 100)) AS EX_USAC_AMT
|
|
|
|
|
+ , IFNULL((SELECT SUM(X.CHANNEL_AMT - X.CNCL_AMT - X.RTN_AMT) AS YOY_TOT_ORD_AMT
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY X
|
|
|
|
|
+ WHERE X.AF_LINK_CD = A.AF_LINK_CD
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ AND X.DAY >= DATE_ADD(STR_TO_DATE(#{startDt},'%Y-%m-%d'), INTERVAL -1 YEAR)
|
|
|
|
|
+ AND X.DAY < DATE_ADD(DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND X.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND X.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND X.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND X.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND X.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>), 0) AS YOY_TOT_ORD_AMT
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY A
|
|
|
|
|
+ INNER JOIN TB_AF_LINK B ON A.AF_LINK_CD = B.AF_LINK_CD
|
|
|
|
|
+ WHERE B.AF_CHANNEL != 'G053_01'
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ AND A.DAY >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND A.DAY < DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY AF_LINK_CD
|
|
|
|
|
+ ) TAB
|
|
|
|
|
+ ORDER BY AF_LINK_NM
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 브랜드 주문목록 조회 -->
|
|
|
|
|
+ <select id="getBrandOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getBrandOrderList */
|
|
|
|
|
+ WITH YOY AS (
|
|
|
|
|
+ SELECT X.BRAND_CD, SUM(X.SELF_AMT + X.CHANNEL_AMT + X.EXTMALL_AMT - X.CNCL_AMT - X.RTN_AMT) AS YOY_TOT_ORD_AMT
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY X
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ AND X.DAY >= DATE_ADD(STR_TO_DATE(#{startDt},'%Y-%m-%d'), INTERVAL -1 YEAR)
|
|
|
|
|
+ AND X.DAY < DATE_ADD(DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND X.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND X.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND X.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND X.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND X.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiExtmallId != null">
|
|
|
|
|
+ /* 제휴몰 */
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="AND X.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAfLinkCd != null">
|
|
|
|
|
+ /* 채널 */
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="AND X.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND Y.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY X.BRAND_CD
|
|
|
|
|
+ )
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ BRAND_CD /*브랜드코드*/
|
|
|
|
|
+ , BRAND_ENM /*브랜드명*/
|
|
|
|
|
+ , TOT_AMT /*총매출*/
|
|
|
|
|
+ , SELL_QTY /*판매수량*/
|
|
|
|
|
+ , SELFMALL_AMT /*자사몰매출*/
|
|
|
|
|
+ , EXTMALL_AMT /*제휴몰매출*/
|
|
|
|
|
+ , CNCL_AMT /*취/반품액*/
|
|
|
|
|
+ , TOT_AMT_10 /*정상매출*/
|
|
|
|
|
+ , TOT_AMT_20 /*이월매출*/
|
|
|
|
|
+ , ROUND( ((FLOOR(TOT_AMT_10 / TOT_AMT * 10000 / 10)) / 10), 1) AS AMT_RATE_10 /*정상비*/
|
|
|
|
|
+ , ROUND(TOT_AMT / (CASE WHEN TOT_AMT >0 AND (YOY_TOT_ORD_AMT IS NULL OR YOY_TOT_ORD_AMT = 0) THEN 1 ELSE YOY_TOT_ORD_AMT END) * 100 - 100,1) AS YOY_RATE /*증가율*/
|
|
|
|
|
+ , YOY_TOT_ORD_AMT
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ BRAND_CD
|
|
|
|
|
+ , BRAND_ENM
|
|
|
|
|
+ , SELF_YN
|
|
|
|
|
+ , SUM(TOT_AMT) AS TOT_AMT
|
|
|
|
|
+ , SUM(SELL_QTY) AS SELL_QTY
|
|
|
|
|
+ , SUM(SELFMALL_AMT) AS SELFMALL_AMT
|
|
|
|
|
+ , SUM(EXTMALL_AMT) AS EXTMALL_AMT
|
|
|
|
|
+ , SUM(CNCL_AMT) AS CNCL_AMT
|
|
|
|
|
+ , SUM(CASE WHEN FORMAL_GB = 'G009_10' THEN TOT_AMT ELSE 0 END) AS TOT_AMT_10 /*정상매출*/
|
|
|
|
|
+ , SUM(CASE WHEN FORMAL_GB = 'G009_20' THEN TOT_AMT ELSE 0 END) AS TOT_AMT_20 /*이월매출*/
|
|
|
|
|
+ , YOY_TOT_ORD_AMT
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ A.BRAND_CD -- 브랜드코드
|
|
|
|
|
+ , B.BRAND_ENM -- 브랜드명
|
|
|
|
|
+ , B.SELF_YN -- 자사여부
|
|
|
|
|
+ , A.FORMAL_GB -- 정상이월구분
|
|
|
|
|
+ , SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT -- 총매출
|
|
|
|
|
+ , SUM(A.SELL_QTY) AS SELL_QTY -- 판매수량
|
|
|
|
|
+ , SUM(A.SELF_AMT + A.CHANNEL_AMT) AS SELFMALL_AMT -- 자사몰매출
|
|
|
|
|
+ , SUM(A.EXTMALL_AMT) AS EXTMALL_AMT -- 제휴몰매출
|
|
|
|
|
+ , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT -- 취/반품액
|
|
|
|
|
+ , C.YOY_TOT_ORD_AMT
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY A LEFT OUTER JOIN YOY C ON A.BRAND_CD = C.BRAND_CD, TB_BRAND B
|
|
|
|
|
+ WHERE A.BRAND_CD = B.BRAND_CD
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ AND DAY >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND DAY < DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiExtmallId != null">
|
|
|
|
|
+ /* 제휴몰 */
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAfLinkCd != null">
|
|
|
|
|
+ /* 채널 */
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY A.BRAND_CD, B.BRAND_ENM, B.SELF_YN, A.FORMAL_GB
|
|
|
|
|
+ ) X
|
|
|
|
|
+ GROUP BY BRAND_CD, BRAND_ENM, SELF_YN
|
|
|
|
|
+ ) Z
|
|
|
|
|
+ ORDER BY SELF_YN DESC, BRAND_ENM
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 시간별 주문 조회 -->
|
|
|
|
|
+ <select id="getHourlyOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getHourlyOrderList */
|
|
|
|
|
+ WITH TAB AS (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ DATE_FORMAT(DAY_TIME, '%H') AS HOUR
|
|
|
|
|
+ , SUM(ORD_AMT) AS ORD_AMT /*매출*/
|
|
|
|
|
+ , SUM(ORD_CUST) AS ORD_CUST /*주문자수*/
|
|
|
|
|
+ , SUM(ORD_CNT) AS ORD_CNT /*주문수*/
|
|
|
|
|
+ , SUM(SELL_QTY) AS SELL_QTY /*판매수*/
|
|
|
|
|
+ , FLOOR(AVG(CUST_PRICE)) AS CUST_PRICE /*객단가*/
|
|
|
|
|
+ , SUM(CNCL_QTY) AS CNCL_QTY /*취반품개수*/
|
|
|
|
|
+ , SUM(CNCL_AMT) AS CNCL_AMT /*취반품액*/
|
|
|
|
|
+ FROM TB_STAT_ORD_TIME A
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ <if test="dtGb != null">
|
|
|
|
|
+ <foreach collection="dtGb" item="item" index="index">
|
|
|
|
|
+ <if test="item == 'COMPARE_TERMS'">
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ /* 직전동기간 */
|
|
|
|
|
+ AND A.DAY_TIME >= DATE_ADD(DATE_FORMAT(#{startDt},'%Y-%m-%d'), INTERVAL (DATE_FORMAT(#{startDt}, '%Y%m%d') - DATE_FORMAT(#{endDt}, '%Y%m%d')) - 1 DAY)
|
|
|
|
|
+ AND A.DAY_TIME < DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="item == 'YOY'">
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ /* 전년비교 */
|
|
|
|
|
+ AND A.DAY_TIME >= DATE_ADD(DATE_FORMAT(#{startDt}, '%Y%m%d'), INTERVAL -1 YEAR )
|
|
|
|
|
+ AND A.DAY_TIME < DATE_ADD(DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY), INTERVAL -1 YEAR )
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="item == 'DIY'">
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ /* 직접선택 */
|
|
|
|
|
+ AND A.DAY_TIME >= DATE_FORMAT(#{compStDt}, '%Y%m%d')
|
|
|
|
|
+ AND A.DAY_TIME < DATE_ADD(DATE_FORMAT(#{compEdDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiExtmallId != null">
|
|
|
|
|
+ /* 제휴몰 */
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAfLinkCd != null">
|
|
|
|
|
+ /* 채널 */
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ AND A.SHOT_DELV_YN = 'Y' /*총알배송*/
|
|
|
|
|
+ GROUP BY HOUR
|
|
|
|
|
+ )
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ A.HOUR
|
|
|
|
|
+ , A.ORD_AMT /*매출*/
|
|
|
|
|
+ , B.ORD_AMT AS COMP_ORD_AMT /*비교*/
|
|
|
|
|
+ , ROUND(FLOOR(A.ORD_AMT / (CASE WHEN B.ORD_AMT IS NULL OR B.ORD_AMT = 0 THEN 1 ELSE B.ORD_AMT END) * 100 * 100) / 100, 2) AS CPL_RATE /*달성율*/
|
|
|
|
|
+ , A.ORD_CUST /*주문자수*/
|
|
|
|
|
+ , A.ORD_CNT /*주문수*/
|
|
|
|
|
+ , A.SELL_QTY /*판매수*/
|
|
|
|
|
+ , A.CUST_PRICE /*객단가*/
|
|
|
|
|
+ , A.CNCL_QTY /*취반품개수*/
|
|
|
|
|
+ , A.CNCL_AMT /*취반품액*/
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ DATE_FORMAT(DAY_TIME, '%H') AS HOUR
|
|
|
|
|
+ , SUM(ORD_AMT) AS ORD_AMT /*매출*/
|
|
|
|
|
+ , SUM(ORD_CUST) AS ORD_CUST /*주문자수*/
|
|
|
|
|
+ , SUM(ORD_CNT) AS ORD_CNT /*주문수*/
|
|
|
|
|
+ , SUM(SELL_QTY) AS SELL_QTY /*판매수*/
|
|
|
|
|
+ , FLOOR(AVG(CUST_PRICE)) AS CUST_PRICE /*객단가*/
|
|
|
|
|
+ , SUM(CNCL_QTY) AS CNCL_QTY /*취반품개수*/
|
|
|
|
|
+ , SUM(CNCL_AMT) AS CNCL_AMT /*취반품액*/
|
|
|
|
|
+ FROM TB_STAT_ORD_TIME A
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ AND A.DAY_TIME >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
+ AND A.DAY_TIME < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiExtmallId != null">
|
|
|
|
|
+ /* 제휴몰 */
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAfLinkCd != null">
|
|
|
|
|
+ /* 채널 */
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+
|
|
|
|
|
+ GROUP BY HOUR
|
|
|
|
|
+ ) A
|
|
|
|
|
+ LEFT OUTER JOIN TAB B ON A.HOUR = B.HOUR
|
|
|
|
|
+ ORDER BY A.HOUR
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 카테고리별 주문 조회 -->
|
|
|
|
|
+ <select id="getCategoryOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getCategoryOrderList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ A.ITEMKIND_CD
|
|
|
|
|
+ , SUBSTRING_INDEX(T4.FULL_CATE_NM, ' > ', 1) AS CATE_NM1 /* 대분류 */
|
|
|
|
|
+ , SUBSTRING_INDEX(SUBSTRING(T4.FULL_CATE_NM, INSTR(SUBSTRING_INDEX(T4.FULL_CATE_NM, ' > ', 2), ' > ') + 3), ' > ', 1) AS CATE_NM2 /* 중분류 */
|
|
|
|
|
+ , SUBSTRING_INDEX(T4.FULL_CATE_NM, ' > ', -1) AS CATE_NM3 -- 소분류
|
|
|
|
|
+ , (A.SELFMALL_AMT + A.EXTMALL_AMT) AS TOT_AMT /*총매출*/
|
|
|
|
|
+ , SELFMALL_AMT /*자사몰매출*/
|
|
|
|
|
+ , EXTMALL_AMT /*제휴몰매출*/
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ A.ITEMKIND_CD
|
|
|
|
|
+ , SUM(CASE WHEN GB = '1' THEN AMT ELSE 0 END ) AS SELFMALL_AMT
|
|
|
|
|
+ , SUM(CASE WHEN GB = '2' THEN AMT ELSE 0 END ) AS EXTMALL_AMT
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ A.ITEMKIND_CD
|
|
|
|
|
+ , SUM(A.SELF_AMT + A.CHANNEL_AMT - A.CNCL_AMT - A.RTN_AMT) AS AMT
|
|
|
|
|
+ , '1' AS GB
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY A
|
|
|
|
|
+ WHERE EXTMALL_ID IS NULL
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ /* 직접선택 */
|
|
|
|
|
+ AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
+ AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiExtmallId != null">
|
|
|
|
|
+ /* 제휴몰 */
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY A.ITEMKIND_CD
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ A.ITEMKIND_CD
|
|
|
|
|
+ , SUM(A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS AMT
|
|
|
|
|
+ , '2' AS GB
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY A
|
|
|
|
|
+ WHERE EXTMALL_ID IS NOT NULL
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ /* 직접선택 */
|
|
|
|
|
+ AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
+ AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiExtmallId != null">
|
|
|
|
|
+ /* 제휴몰 */
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY A.ITEMKIND_CD
|
|
|
|
|
+ ) A
|
|
|
|
|
+ GROUP BY A.ITEMKIND_CD
|
|
|
|
|
+ ) A, TB_ITEMKIND_CATE TC, TB_CATE_4SRCH T4
|
|
|
|
|
+ WHERE A.ITEMKIND_CD = TC.ITEMKIND_CD
|
|
|
|
|
+ AND TC.CATE_NO = T4.LEAF_CATE_NO
|
|
|
|
|
+ AND (A.SELFMALL_AMT + A.EXTMALL_AMT) > 0
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 카테고리 상세 조회 -->
|
|
|
|
|
+ <select id="getCategoryOrderDetailList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getCategoryOrderDetailList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ C.BRAND_ENM
|
|
|
|
|
+ , A.GOODS_CD
|
|
|
|
|
+ , B.GOODS_NM
|
|
|
|
|
+ , SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT /*총매출*/
|
|
|
|
|
+ , SUM(A.SELL_QTY) AS SELL_QTY /*판매수량*/
|
|
|
|
|
+ , SUM(A.ORD_CUST) AS ORD_CUST /*구매자수*/
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY A, TB_GOODS B, TB_BRAND C
|
|
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
|
|
+ AND A.BRAND_CD = C.BRAND_CD
|
|
|
|
|
+ AND (A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) > 0
|
|
|
|
|
+ AND A.ITEMKIND_CD = #{itemkindCd}
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ /* 직접선택 */
|
|
|
|
|
+ AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
+ AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ GROUP BY C.BRAND_ENM, A.GOODS_CD, B.GOODS_NM
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 클래임 주문조회 -->
|
|
|
|
|
+ <select id="getClaimOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getClaimOrderList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ DATE_FORMAT(DAY, '%m-%d') AS DAY
|
|
|
|
|
+ , SUM(A.CNCL_AMT + A.RTN_AMT + A.CHG_DELV_FEE) AS CLM_AMT /*클레임액*/
|
|
|
|
|
+ , SUM(A.CNCL_QTY + A.RTN_QTY + A.CHG_QTY) AS CLM_QTY /*클레임수*/
|
|
|
|
|
+ , ROUND(FLOOR(SUM(A.CNCL_AMT + A.RTN_AMT + A.CHG_DELV_FEE) / SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT) * 100 * 10) / 10, 1) AS AMT_RATE
|
|
|
|
|
+ , ROUND(FLOOR(SUM(A.CNCL_QTY + A.RTN_QTY + A.CHG_QTY) / SUM(A.SELL_QTY) * 100 * 10) / 10, 1) AS CLM_RATE
|
|
|
|
|
+ , SUM(A.CNCL_QTY) AS CNCL_QTY /*취소수*/
|
|
|
|
|
+ , SUM(A.CNCL_AMT) AS CNCL_AMT /*취소액*/
|
|
|
|
|
+ , SUM(A.RTN_QTY) AS RTN_QTY /*반품수*/
|
|
|
|
|
+ , SUM(A.RTN_AMT) AS RTN_AMT /*반품액*/
|
|
|
|
|
+ , SUM(A.CHG_QTY) AS CHG_QTY /*교환수*/
|
|
|
|
|
+ , SUM(A.CHG_DELV_FEE) AS CHG_DELV_FEE /*교환배송비*/
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY A
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ /* 직접선택 */
|
|
|
|
|
+ AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
+ AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiExtmallId != null">
|
|
|
|
|
+ /* 제휴몰 */
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSupplyCompCd != null">
|
|
|
|
|
+ /* 공급처 */
|
|
|
|
|
+ <foreach collection="multiSupplyCompCd" item="item" index="index" open="AND A.SUPPLY_COMP_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAfLinkCd != null">
|
|
|
|
|
+ /* 채널 */
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY, '%m-%d')
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 베스트 상품 조회 -->
|
|
|
|
|
+ <sql id="getBestOrderListSql">
|
|
|
|
|
+ /* TsaStatistics.getBestOrderList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ (SELECT SUBSTRING_INDEX(SYS_IMG_NM , '/', 2) FROM TB_GOODS_IMG X WHERE X.GOODS_CD = B.GOODS_CD AND X.DEFAULT_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM /*상품이미지*/
|
|
|
|
|
+ , C.BRAND_ENM /*브랜드명*/
|
|
|
|
|
+ , A.GOODS_CD /*상품코드*/
|
|
|
|
|
+ , B.GOODS_NM /*상품명*/
|
|
|
|
|
+ , CASE WHEN A.DISTRIBUTION_GB = 'WMS' THEN '위탁' ELSE '입점' END AS DISTRIBUTION_GB /*구분*/
|
|
|
|
|
+ , B.CURR_PRICE /*판매가*/
|
|
|
|
|
+ , SUM(A.SELL_QTY - A.CNCL_QTY - A.RTN_QTY) AS SELL_QTY /*판매수*/
|
|
|
|
|
+ , SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT /*매출액*/
|
|
|
|
|
+ , SUM(D.STOCK_QTY) AS STOCK_QTY /*현재고수량*/
|
|
|
|
|
+ FROM TB_STAT_ORD_DAY A, TB_GOODS B, TB_BRAND C, TB_GOODS_STOCK D
|
|
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
|
|
+ AND A.BRAND_CD = C.BRAND_CD
|
|
|
|
|
+ AND A.GOODS_CD = D.GOODS_CD
|
|
|
|
|
+ <![CDATA[
|
|
|
|
|
+ /* 직접선택 */
|
|
|
|
|
+ AND A.DAY >= DATE_FORMAT(#{startDt}, '%Y%m%d')
|
|
|
|
|
+ AND A.DAY < DATE_ADD(DATE_FORMAT(#{endDt}, '%Y%m%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ ]]>
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiExtmallId != null">
|
|
|
|
|
+ /* 제휴몰 */
|
|
|
|
|
+ <foreach collection="multiExtmallId" item="item" index="index" open="AND A.EXTMALL_ID IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiDistributionGb != null">
|
|
|
|
|
+ /* 물류구분 */
|
|
|
|
|
+ <foreach collection="multiDistributionGb" item="item" index="index" open="AND A.DISTRIBUTION_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiFormalGb != null">
|
|
|
|
|
+ /* 정상/이월구분 */
|
|
|
|
|
+ <foreach collection="multiFormalGb" item="item" index="index" open="AND A.FORMAL_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSexGb != null">
|
|
|
|
|
+ /* 성별구분 */
|
|
|
|
|
+ <foreach collection="multiSexGb" item="item" index="index" open="AND A.SEX_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAgeGb != null">
|
|
|
|
|
+ /* 성별구분 */
|
|
|
|
|
+ <foreach collection="multiAgeGb" item="item" index="index" open="AND A.AGE IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND A.BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND A.ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAfLinkCd != null">
|
|
|
|
|
+ /* 채널 */
|
|
|
|
|
+ <foreach collection="multiAfLinkCd" item="item" index="index" open="AND A.AF_LINK_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY C.BRAND_ENM, A.GOODS_CD, B.GOODS_NM, A.DISTRIBUTION_GB, B.CURR_PRICE
|
|
|
|
|
+ ORDER BY TOT_AMT DESC
|
|
|
|
|
+ </sql>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 베스트 주문조회 -->
|
|
|
|
|
+ <select id="getBestOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ <include refid="getBestOrderListSql"></include>
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <!-- 베스트 주문조회 -->
|
|
|
|
|
+ <select id="getBestOrderListMap" parameterType="Statistics" resultType="paramMap">
|
|
|
|
|
+ <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
|
|
|
|
|
+ , ROUND((USE_CNT / DOWN_CNT) * 100 * 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
|
|
|
|
|
+ , ROUND((X.CUST_CPN_CNT / Z.CUST_CNT * 100 * 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
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test="applyGbArr != null and applyGbArr != ''">
|
|
|
|
|
+ /* 프로모션유형 */
|
|
|
|
|
+ <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>
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise>
|
|
|
|
|
+ /* 프로모션유형값없을시 */
|
|
|
|
|
+ AND (B.TMTB1_DC_AMT + B.TMTB2_DC_AMT) > 0
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ )
|
|
|
|
|
+ -- 수량할인
|
|
|
|
|
+ , 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
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test="distributionGbS != null and distributionGbS !='' and distributionGbW != null and distributionGbW !=''">
|
|
|
|
|
+ AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12', 'G065_20')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test="distributionGbW != null and distributionGbW !=''">
|
|
|
|
|
+ AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test="distributionGbS != null and distributionGbS !=''">
|
|
|
|
|
+ AND C.DISTRIBUTION_GB = 'G065_20'
|
|
|
|
|
+ </when>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ <if test="multiPlanSq != 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
|
|
|
|
|
+ , ROUND((SUM(CUST_CNT) / (SELECT TOT_CUST_CNT FROM TAB) * 100 * 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
|
|
|
|
|
+ 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>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 카드 목록 -->
|
|
|
|
|
+ <select id="getCardList" resultType="Card">
|
|
|
|
|
+ /* TsaStatistics.getCardList */
|
|
|
|
|
+ SELECT CD AS CARD_CD
|
|
|
|
|
+ , CD_NM AS CARD_NM
|
|
|
|
|
+ FROM TB_COMMON_CODE
|
|
|
|
|
+ WHERE CD_GB = 'G050'
|
|
|
|
|
+ ORDER BY CD_GB, DISP_ORD
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 결제수단별통계 목록 -->
|
|
|
|
|
+ <select id="getPaymentList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getPaymentList */
|
|
|
|
|
+ WITH TAB AS (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ DATE_FORMAT(DAY, '%Y-%m-%d') AS DAY
|
|
|
|
|
+ , PAY_MEANS -- 결제수단
|
|
|
|
|
+ , PAY_AMT -- 결제금액
|
|
|
|
|
+ , PG_GB -- PG구분
|
|
|
|
|
+ FROM TB_STAT_PAY A
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ AND A.DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND A.DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ <if test='multiCardId != null and multiCardId != ""'>
|
|
|
|
|
+ AND COM_CARD_CD IN
|
|
|
|
|
+ <foreach collection="multiCardId" item="item" index="index" open="(" close=")" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='simpleGbC != null and simpleGbC != "" and simpleGbB != null and simpleGbB != ""'>
|
|
|
|
|
+ AND PG_GB IN('KAKAO','NAVER','PAYCO')
|
|
|
|
|
+ AND PAY_MEANS IN ('G014_30','G014_10')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='simpleGbC != null and simpleGbC != ""'>
|
|
|
|
|
+ AND PG_GB IN('KAKAO','NAVER','PAYCO')
|
|
|
|
|
+ AND PAY_MEANS = 'G014_30'
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='simpleGbB != null and simpleGbB != ""'>
|
|
|
|
|
+ AND PG_GB IN('KAKAO','NAVER','PAYCO')
|
|
|
|
|
+ AND PAY_MEANS = 'G014_10'
|
|
|
|
|
+ </when>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ )
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ DAY
|
|
|
|
|
+ , SUM(CD_AMT) AS CD_AMT -- 카드
|
|
|
|
|
+ , SUM(AC_AMT) AS AC_AMT -- 실시간계좌이체
|
|
|
|
|
+ , SUM(VA_AMT) AS VA_AMT -- 무통장
|
|
|
|
|
+ , SUM(HP_AMT) AS HP_AMT -- 휴대폰
|
|
|
|
|
+ , SUM(CP_AMT) AS CP_AMT -- PG쿠폰
|
|
|
|
|
+ , SUM(NPAY_AMT) AS NPAY_AMT -- 네이버페이
|
|
|
|
|
+ , SUM(PAYCO_AMT) AS PAYCO_AMT -- 페이코
|
|
|
|
|
+ , SUM(KAKAO_AMT) AS KAKAO_AMT -- 카카오
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ DAY
|
|
|
|
|
+ , CASE WHEN PAY_MEANS = 'G014_30' THEN PAY_AMT ELSE 0 END AS CD_AMT
|
|
|
|
|
+ , CASE WHEN PAY_MEANS = 'G014_10' THEN PAY_AMT ELSE 0 END AS AC_AMT
|
|
|
|
|
+ , CASE WHEN PAY_MEANS = 'G014_20' THEN PAY_AMT ELSE 0 END AS VA_AMT
|
|
|
|
|
+ , CASE WHEN PAY_MEANS = 'G014_60' THEN PAY_AMT ELSE 0 END AS HP_AMT
|
|
|
|
|
+ , CASE WHEN PAY_MEANS = 'G014_50' THEN PAY_AMT ELSE 0 END AS CP_AMT
|
|
|
|
|
+ , CASE WHEN PAY_MEANS = 'NAVER' THEN PAY_AMT ELSE 0 END AS NPAY_AMT
|
|
|
|
|
+ , CASE WHEN PAY_MEANS = 'PAYCO' THEN PAY_AMT ELSE 0 END AS PAYCO_AMT
|
|
|
|
|
+ , CASE WHEN PAY_MEANS = 'KAKAO' THEN PAY_AMT ELSE 0 END AS KAKAO_AMT
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , PAY_MEANS
|
|
|
|
|
+ , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ WHERE PAY_MEANS = 'G014_30'
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , PAY_MEANS
|
|
|
|
|
+ , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ WHERE PAY_MEANS = 'G014_10'
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , PAY_MEANS
|
|
|
|
|
+ , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ WHERE PAY_MEANS = 'G014_20'
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , PAY_MEANS
|
|
|
|
|
+ , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ WHERE PAY_MEANS = 'G014_60'
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , PAY_MEANS
|
|
|
|
|
+ , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ WHERE PAY_MEANS = 'G014_50'
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , PG_GB AS PAY_MEANS
|
|
|
|
|
+ , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ WHERE PG_GB = 'NAVER'
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , PG_GB AS PAY_MEANS
|
|
|
|
|
+ , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ WHERE PG_GB = 'PAYCO'
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , PG_GB AS PAY_MEANS
|
|
|
|
|
+ , SUM(PAY_AMT) AS PAY_AMT
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ WHERE PG_GB = 'KAKAO'
|
|
|
|
|
+ GROUP BY DAY
|
|
|
|
|
+ ) Z
|
|
|
|
|
+ ) Z
|
|
|
|
|
+ GROUP BY DAY
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 부결제수단별통계 목록 -->
|
|
|
|
|
+ <select id="getSubPaymentList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getSubPaymentList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , SUM(A.PNT_GIVE) AS PNT_GIVE -- 포인트적립액
|
|
|
|
|
+ , SUM(A.PNT_ORD_CNT) AS PNT_ORD_CNT -- 포인트사용주문수
|
|
|
|
|
+ , SUM(A.PNT_USE) AS PNT_USE -- 포인트사용액
|
|
|
|
|
+ , SUM(A.GIFT_REG_CNT) AS GIFT_REG_CNT -- 상품권등록매수
|
|
|
|
|
+ , SUM(A.GIFT_ORD_CNT) AS GIFT_ORD_CNT -- 상품권주문수
|
|
|
|
|
+ , SUM(A.GIFT_USE) AS GIFT_USE -- 상품권사용액
|
|
|
|
|
+ FROM TB_STAT_SUB_PAY A
|
|
|
|
|
+ WHERE A.DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND A.DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='pointGb != null and pointGb != "" and giftCardGb != null and giftCardGb != ""'>
|
|
|
|
|
+ AND OCCUR_GB IN(#{pointGb}, #{giftCardGb})
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='pointGb != null and pointGb != ""'>
|
|
|
|
|
+ AND OCCUR_GB = #{pointGb}
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='giftCardGb != null and giftCardGb != ""'>
|
|
|
|
|
+ AND OCCUR_GB = {giftCardGb}
|
|
|
|
|
+ </when>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 포인트잔액 -->
|
|
|
|
|
+ <select id="getRemainPoint" resultType="java.lang.Long">
|
|
|
|
|
+ /* TsaStatistics.getRemainPoint */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ SUM(RM_PNT_AMT) AS RM_PNT_AMT
|
|
|
|
|
+ FROM TB_CUST_POINT A
|
|
|
|
|
+ WHERE A.EXP_CMP_DT IS NULL
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 포인트잔액 -->
|
|
|
|
|
+ <select id="getRemainGiftCard" resultType="java.lang.Long">
|
|
|
|
|
+ /* TsaStatistics.getRemainGiftCard */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ SUM(RM_GFCD_AMT) AS RM_GFCD_AMT
|
|
|
|
|
+ FROM TB_CUST_GIFTCARD A
|
|
|
|
|
+ WHERE DATE_FORMAT(USE_EXP_DATE, '%Y%m%d') < NOW()
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 가입통계 -->
|
|
|
|
|
+ <select id="getCustomerJoinList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getCustomerJoinList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m') AS DAY
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ DATE_FORMAT(DAY,'%Y-%m-%d') AS DAY
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ , MAX(ALL_CNT) AS ALL_CNT
|
|
|
|
|
+ , MAX(REAL_CNT) AS REAL_CNT
|
|
|
|
|
+ , MAX(DORM_CNT) AS DORM_CNT
|
|
|
|
|
+ , MAX(VIP_CNT) AS VIP_CNT
|
|
|
|
|
+ , MAX(GOLD_CNT) AS GOLD_CNT
|
|
|
|
|
+ , MAX(SILVER_CNT) AS SILVER_CNT
|
|
|
|
|
+ , MAX(BRONZE_CNT) AS BRONZE_CNT
|
|
|
|
|
+ , MAX(WELCOME_CNT) AS WELCOME_CNT
|
|
|
|
|
+ , SUM(JOIN_CNT) AS JOIN_CNT
|
|
|
|
|
+ , SUM(DR_JOIN_CNT) AS DR_JOIN_CNT
|
|
|
|
|
+ , SUM(AF_JOIN_CNT) AS AF_JOIN_CNT
|
|
|
|
|
+ , SUM(CHG_DORM_CNT) AS CHG_DORM_CNT
|
|
|
|
|
+ , SUM(RM_DORM_CNT) AS RM_DORM_CNT
|
|
|
|
|
+ , SUM(SECEED_CNT) AS SECEED_CNT
|
|
|
|
|
+ FROM TB_STAT_CUST
|
|
|
|
|
+ WHERE DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ <if test="multiSexGb != null">
|
|
|
|
|
+ /* 성별구분 */
|
|
|
|
|
+ <foreach collection="multiSexGb" item="item" index="index" open="AND SEX_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAgeGb != null">
|
|
|
|
|
+ /* 연령구분 */
|
|
|
|
|
+ <foreach collection="multiAgeGb" item="item" index="index" open="AND AGE IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <choose>
|
|
|
|
|
+ <when test='dayGb == "W"'> <!-- 주별 -->
|
|
|
|
|
+ GROUP BY CONCAT(MONTH(DAY), '월 ', WEEK(DAY,5) - WEEK(DATE_SUB(DAY, INTERVAL DAYOFMONTH(DAY) - 1 DAY), 5) + 1, '주')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <when test='dayGb == "M"'> <!-- 월별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m')
|
|
|
|
|
+ </when>
|
|
|
|
|
+ <otherwise> <!-- 일별 -->
|
|
|
|
|
+ GROUP BY DATE_FORMAT(DAY,'%Y-%m-%d')
|
|
|
|
|
+ </otherwise>
|
|
|
|
|
+ </choose>
|
|
|
|
|
+ ORDER BY DAY DESC
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 등급별주문현황 -->
|
|
|
|
|
+ <select id="getCustomerGradOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getCustomerGradOrderList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ CASE WHEN A.CUST_GRADE = 'G110_10' THEN 1
|
|
|
|
|
+ WHEN A.CUST_GRADE = 'G110_20' THEN 2
|
|
|
|
|
+ WHEN A.CUST_GRADE = 'G110_30' THEN 3
|
|
|
|
|
+ WHEN A.CUST_GRADE = 'G110_40' THEN 4
|
|
|
|
|
+ WHEN A.CUST_GRADE = 'G110_50' THEN 5
|
|
|
|
|
+ ELSE 6 END AS PRIORITY
|
|
|
|
|
+ , FN_GET_CODE_NM('G110', A.CUST_GRADE) AS CUST_GRADE
|
|
|
|
|
+ , SUM(A.ORD_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_ORD_AMT -- 총매출액
|
|
|
|
|
+ , SUM(A.ORD_AMT) AS ORD_AMT -- 매출액
|
|
|
|
|
+ , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT -- 취/반품액
|
|
|
|
|
+ , SUM(A.ORD_CNT) AS ORD_CNT -- 주문수
|
|
|
|
|
+ , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY -- 취/반품갯수
|
|
|
|
|
+ , ROUND(CEIL(AVG(A.ORD_CNT) * 10) / 10, 1) AS AVG_ORD_CNT -- 평균주문수
|
|
|
|
|
+ , ROUND(CEIL(AVG(A.SELL_QTY) * 10) / 10, 1) AS AVG_SELL_QTY -- 평균주문상품개수
|
|
|
|
|
+ , FLOOR(SUM(A.ORD_AMT) / SUM(A.ORD_CNT)) AS CUST_PRICE -- 객단가
|
|
|
|
|
+ FROM TB_STAT_CUST_ORD A
|
|
|
|
|
+ WHERE DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSexGb != null">
|
|
|
|
|
+ /* 성별구분 */
|
|
|
|
|
+ <foreach collection="multiSexGb" item="item" index="index" open="AND SEX_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAgeGb != null">
|
|
|
|
|
+ /* 연령구분 */
|
|
|
|
|
+ <foreach collection="multiAgeGb" item="item" index="index" open="AND AGE IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY A.CUST_GRADE
|
|
|
|
|
+ ORDER BY PRIORITY
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 등급별주문현황 -->
|
|
|
|
|
+ <select id="getCustomerAgeOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getCustomerAgeOrderList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ CASE WHEN A.AGE != 'X' THEN CONCAT(A.AGE, '대') ELSE '50대이상/기타' END AS AGE
|
|
|
|
|
+ , FN_GET_CODE_NM('G007', A.SEX_GB) AS SEX_GB
|
|
|
|
|
+ , SUM(A.ORD_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_ORD_AMT -- 총매출액
|
|
|
|
|
+ , SUM(A.ORD_AMT) AS ORD_AMT -- 매출액
|
|
|
|
|
+ , SUM(A.CNCL_AMT + A.RTN_AMT) AS CNCL_AMT -- 취/반품액
|
|
|
|
|
+ , SUM(A.ORD_CNT) AS ORD_CNT -- 주문수
|
|
|
|
|
+ , SUM(A.CNCL_QTY + A.RTN_QTY) AS CNCL_QTY -- 취/반품갯수
|
|
|
|
|
+ , ROUND(CEIL(AVG(A.ORD_CNT) * 10) / 10, 1) AS AVG_ORD_CNT -- 평균주문수
|
|
|
|
|
+ , ROUND(CEIL(AVG(A.SELL_QTY) * 10) / 10, 1) AS AVG_SELL_QTY -- 평균주문상품개수
|
|
|
|
|
+ , FLOOR(SUM(A.ORD_AMT) / SUM(A.ORD_CNT)) AS CUST_PRICE -- 객단가
|
|
|
|
|
+ FROM TB_STAT_CUST_ORD A
|
|
|
|
|
+ WHERE DAY <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
|
|
+ AND DAY <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiGradeGb != null">
|
|
|
|
|
+ /* 등급 */
|
|
|
|
|
+ <foreach collection="multiGradeGb" item="item" index="index" open="AND CUST_GRADE IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY A.AGE, A.SEX_GB
|
|
|
|
|
+ ORDER BY A.AGE, A.SEX_GB
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 구매자랭킹 -->
|
|
|
|
|
+ <select id="getCustomerRankingList" parameterType="Statistics" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getCustomerRankingList */
|
|
|
|
|
+ WITH TAB AS (
|
|
|
|
|
+ SELECT *
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT A.ORD_NO
|
|
|
|
|
+ , B.ORD_DTL_NO
|
|
|
|
|
+ , B.ORD_QTY
|
|
|
|
|
+ , B.CNCL_RTN_QTY
|
|
|
|
|
+ , B.ORD_AMT
|
|
|
|
|
+ , B.CNCL_RTN_AMT
|
|
|
|
|
+ , B.CPN1_DC_AMT
|
|
|
|
|
+ , A.PAY_DT
|
|
|
|
|
+ , A.FRONT_GB
|
|
|
|
|
+ , C.ITEMKIND_CD
|
|
|
|
|
+ , C.BRAND_CD
|
|
|
|
|
+ , E.CUST_NO
|
|
|
|
|
+ , E.CUST_GRADE
|
|
|
|
|
+ , RANK() OVER (PARTITION BY B.ORD_DTL_NO ORDER BY B.ORD_DTL_HST_SQ) AS RNK
|
|
|
|
|
+ FROM TB_ORDER A,
|
|
|
|
|
+ TB_ORDER_DETAIL_HST B,
|
|
|
|
|
+ TB_GOODS C,
|
|
|
|
|
+ TB_CUSTOMER E
|
|
|
|
|
+ WHERE A.ORD_NO = B.ORD_NO
|
|
|
|
|
+ AND B.GOODS_CD = C.GOODS_CD
|
|
|
|
|
+ AND A.CUST_NO = E.CUST_NO
|
|
|
|
|
+ AND A.PAY_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
+ AND A.PAY_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
+ AND E.CUST_NO > 0
|
|
|
|
|
+ AND A.MALL_GB = 'G011_10'
|
|
|
|
|
+ AND B.ORD_EXCH_GB = 'O'
|
|
|
|
|
+ AND B.ORD_DTL_STAT = 'G013_20' -- 결제완료
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSexGb != null">
|
|
|
|
|
+ /* 성별구분 */
|
|
|
|
|
+ <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(E.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAgeGb != null">
|
|
|
|
|
+ /* 연령구분 */
|
|
|
|
|
+ <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(E.BIRTH_YMD) = '' OR FN_DEC_AES(E.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(E.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(E.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(E.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(E.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
+ ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ ) A
|
|
|
|
|
+ WHERE RNK = 1
|
|
|
|
|
+ )
|
|
|
|
|
+ -- 판매수
|
|
|
|
|
+ , TAB_SELL_QTY AS (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ SUM(ORD_QTY) AS VAL
|
|
|
|
|
+ , '1' AS GBN
|
|
|
|
|
+ , CUST_NO
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ GROUP BY CUST_NO
|
|
|
|
|
+ )
|
|
|
|
|
+ -- 매출
|
|
|
|
|
+ , TAB_ORD AS (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ SUM(ORD_AMT + CPN1_DC_AMT + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = A.ORD_DTL_NO)) AS VAL
|
|
|
|
|
+ , '2' AS GBN
|
|
|
|
|
+ , CUST_NO
|
|
|
|
|
+ FROM TAB A
|
|
|
|
|
+ GROUP BY CUST_NO
|
|
|
|
|
+ )
|
|
|
|
|
+ -- 취소갯수
|
|
|
|
|
+ , TAB_CNCL_QTY AS (
|
|
|
|
|
+ SELECT SUM(CHG_QTY) AS VAL
|
|
|
|
|
+ , '3' AS GBN
|
|
|
|
|
+ , C.CUST_NO
|
|
|
|
|
+ FROM TB_ORDER_CHANGE_DETAIL A, TB_ORDER_DETAIL B, TB_ORDER C, TB_GOODS E, TB_CUSTOMER G
|
|
|
|
|
+ WHERE A.ORD_DTL_NO = B.ORD_DTL_NO
|
|
|
|
|
+ AND B.ORD_NO = C.ORD_NO
|
|
|
|
|
+ AND B.GOODS_CD = E.GOODS_CD
|
|
|
|
|
+ AND C.CUST_NO = G.CUST_NO
|
|
|
|
|
+ AND CHG_STAT = 'G685_18' -- 결제후취소
|
|
|
|
|
+ AND COMPLETE_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
+ AND COMPLETE_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
+ AND MALL_GB = 'G011_10'
|
|
|
|
|
+ AND G.CUST_NO > 0
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND C.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSexGb != null">
|
|
|
|
|
+ /* 성별구분 */
|
|
|
|
|
+ <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(G.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAgeGb != null">
|
|
|
|
|
+ /* 연령구분 */
|
|
|
|
|
+ <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(G.BIRTH_YMD) = '' OR FN_DEC_AES(G.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
+ ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY C.CUST_NO
|
|
|
|
|
+ )
|
|
|
|
|
+ -- 반품갯수
|
|
|
|
|
+ , TAB_RTN_QTY AS (
|
|
|
|
|
+ SELECT SUM(CHG_QTY) AS VAL
|
|
|
|
|
+ , '4' AS GBN
|
|
|
|
|
+ , C.CUST_NO
|
|
|
|
|
+ FROM TB_ORDER_CHANGE_DETAIL A, TB_ORDER_DETAIL B, TB_ORDER C, TB_GOODS E, TB_CUSTOMER G
|
|
|
|
|
+ WHERE A.ORD_DTL_NO = B.ORD_DTL_NO
|
|
|
|
|
+ AND B.ORD_NO = C.ORD_NO
|
|
|
|
|
+ AND B.GOODS_CD = E.GOODS_CD
|
|
|
|
|
+ AND C.CUST_NO = G.CUST_NO
|
|
|
|
|
+ AND CHG_STAT = 'G685_60' -- 반품완료
|
|
|
|
|
+ AND COMPLETE_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
+ AND COMPLETE_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
+ AND MALL_GB = 'G011_10'
|
|
|
|
|
+ AND G.CUST_NO > 0
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND C.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSexGb != null">
|
|
|
|
|
+ /* 성별구분 */
|
|
|
|
|
+ <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(G.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAgeGb != null">
|
|
|
|
|
+ /* 연령구분 */
|
|
|
|
|
+ <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(G.BIRTH_YMD) = '' OR FN_DEC_AES(G.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
+ ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY C.CUST_NO
|
|
|
|
|
+ )
|
|
|
|
|
+ -- 취소액
|
|
|
|
|
+ , TAB_CNCL_AMT AS (
|
|
|
|
|
+ SELECT 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)) * B.CHG_QTY) AS VAL
|
|
|
|
|
+ , '5' AS GBN
|
|
|
|
|
+ , D.CUST_NO
|
|
|
|
|
+ FROM TB_ORDER_CHANGE_DETAIL B, TB_ORDER_DETAIL C, TB_ORDER D, TB_GOODS E, TB_CUSTOMER G
|
|
|
|
|
+ WHERE B.ORD_DTL_NO = C.ORD_DTL_NO
|
|
|
|
|
+ AND C.ORD_NO = D.ORD_NO
|
|
|
|
|
+ AND C.GOODS_CD = E.GOODS_CD
|
|
|
|
|
+ AND D.CUST_NO = G.CUST_NO
|
|
|
|
|
+ AND CHG_STAT = 'G685_18' -- 결제후취소
|
|
|
|
|
+ AND B.COMPLETE_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
+ AND B.COMPLETE_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
+ AND MALL_GB = 'G011_10'
|
|
|
|
|
+ AND G.CUST_NO > 0
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND D.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSexGb != null">
|
|
|
|
|
+ /* 성별구분 */
|
|
|
|
|
+ <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(G.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAgeGb != null">
|
|
|
|
|
+ /* 연령구분 */
|
|
|
|
|
+ <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(G.BIRTH_YMD) = '' OR FN_DEC_AES(G.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
+ ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY D.CUST_NO
|
|
|
|
|
+ )
|
|
|
|
|
+ -- 반품액
|
|
|
|
|
+ , TAB_RTN_AMT AS (
|
|
|
|
|
+ SELECT 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)) * B.CHG_QTY) AS VAL
|
|
|
|
|
+ , '6' AS GBN
|
|
|
|
|
+ , D.CUST_NO
|
|
|
|
|
+ FROM TB_ORDER_CHANGE_DETAIL B, TB_ORDER_DETAIL C, TB_ORDER D, TB_GOODS E, TB_CUSTOMER G
|
|
|
|
|
+ WHERE B.ORD_DTL_NO = C.ORD_DTL_NO
|
|
|
|
|
+ AND C.ORD_NO = D.ORD_NO
|
|
|
|
|
+ AND C.GOODS_CD = E.GOODS_CD
|
|
|
|
|
+ AND D.CUST_NO = G.CUST_NO
|
|
|
|
|
+ AND CHG_STAT = 'G685_60' -- 반품완료
|
|
|
|
|
+ AND B.COMPLETE_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d') -- 시작일변수
|
|
|
|
|
+ AND B.COMPLETE_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY) -- 종료일변수
|
|
|
|
|
+ AND MALL_GB = 'G011_10'
|
|
|
|
|
+ AND G.CUST_NO > 0
|
|
|
|
|
+ <if test="multiFrontGb != null">
|
|
|
|
|
+ /* 디바이스 */
|
|
|
|
|
+ <foreach collection="multiFrontGb" item="item" index="index" open="AND D.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiSexGb != null">
|
|
|
|
|
+ /* 성별구분 */
|
|
|
|
|
+ <foreach collection="multiSexGb" item="item" index="index" open="AND FN_DEC_AES(G.SEX_GB) IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiAgeGb != null">
|
|
|
|
|
+ /* 연령구분 */
|
|
|
|
|
+ <foreach collection="multiAgeGb" item="item" index="index" open="AND CASE WHEN FN_DEC_AES(G.BIRTH_YMD) = '' OR FN_DEC_AES(G.BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(G.BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
+ ELSE 'X' END IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiBrandCd != null">
|
|
|
|
|
+ /* 브랜드 */
|
|
|
|
|
+ <foreach collection="multiBrandCd" item="item" index="index" open="AND BRAND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="multiItemkindCd != null">
|
|
|
|
|
+ /* 품목 */
|
|
|
|
|
+ <foreach collection="multiItemkindCd" item="item" index="index" open="AND ITEMKIND_CD IN (" close=")" separator=",">#{item}</foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY D.CUST_NO
|
|
|
|
|
+ )
|
|
|
|
|
+ -- 주문수
|
|
|
|
|
+ , TAB_ORD_CNT AS (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ SUM(VAL) AS VAL
|
|
|
|
|
+ , '7' AS GBN
|
|
|
|
|
+ , CUST_NO
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ 1 AS VAL
|
|
|
|
|
+ , ORD_NO
|
|
|
|
|
+ , CUST_NO
|
|
|
|
|
+ FROM TAB
|
|
|
|
|
+ GROUP BY ORD_NO, CUST_NO
|
|
|
|
|
+ ) A
|
|
|
|
|
+ GROUP BY CUST_NO
|
|
|
|
|
+ )
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ CONCAT(SUBSTRING(CUST_ID, 1, 3), '****', '(', SUBSTRING(FN_DEC_AES(CUST_NM), 1, 1), '**', ')') AS CUST_ID -- 아이디
|
|
|
|
|
+ , CASE WHEN FN_DEC_AES(BIRTH_YMD) = '' OR FN_DEC_AES(BIRTH_YMD) IS NULL THEN 'X'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 30 AND 39 THEN '30'
|
|
|
|
|
+ WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(CONCAT(SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 4), '0101'), '%Y') + 1) BETWEEN 40 AND 49 THEN '40'
|
|
|
|
|
+ ELSE 'X' END AS AGE
|
|
|
|
|
+ , X.CUST_NO
|
|
|
|
|
+ , FN_GET_CODE_NM('G007', FN_DEC_AES(SEX_GB)) AS SEX_GB
|
|
|
|
|
+ , FN_GET_CODE_NM('G110', CUST_GRADE) AS CUST_GRADE -- 등급
|
|
|
|
|
+ , SUM(ORD_AMT - CNCL_AMT - RTN_AMT) AS TOT_ORD_AMT -- 매출액
|
|
|
|
|
+ , SUM(ORD_CNT) AS ORD_CNT -- 주문수
|
|
|
|
|
+ , SUM(SELL_QTY - CNCL_QTY - RTN_QTY) AS SELL_QTY -- 판매수
|
|
|
|
|
+ , FLOOR(SUM(ORD_AMT) / SUM(ORD_CNT)) AS CUST_PRICE -- 객단가
|
|
|
|
|
+ , IFNULL((SELECT SUM(RM_PNT_AMT) FROM TB_CUST_POINT CP WHERE CP.CUST_NO = X.CUST_NO AND EXP_CMP_DT IS NULL), 0) AS CUST_POINT -- 회원포인트
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ CUST_NO
|
|
|
|
|
+ , SUM(CASE WHEN GBN = '1' THEN VAL ELSE 0 END) AS SELL_QTY -- 판매수
|
|
|
|
|
+ , SUM(CASE WHEN GBN = '2' THEN VAL ELSE 0 END) AS ORD_AMT -- 매출액(판매금액)
|
|
|
|
|
+ , SUM(CASE WHEN GBN = '3' THEN VAL ELSE 0 END) AS CNCL_QTY -- 취소수량
|
|
|
|
|
+ , SUM(CASE WHEN GBN = '4' THEN VAL ELSE 0 END) AS RTN_QTY -- 반품수량
|
|
|
|
|
+ , SUM(CASE WHEN GBN = '5' THEN VAL ELSE 0 END) AS CNCL_AMT -- 취소금액
|
|
|
|
|
+ , SUM(CASE WHEN GBN = '6' THEN VAL ELSE 0 END) AS RTN_AMT -- 반품금액
|
|
|
|
|
+ , SUM(CASE WHEN GBN = '7' THEN VAL ELSE 0 END) AS ORD_CNT -- 주문수
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT * FROM TAB_SELL_QTY
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT * FROM TAB_ORD
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT * FROM TAB_CNCL_QTY
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT * FROM TAB_RTN_QTY
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT * FROM TAB_CNCL_AMT
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT * FROM TAB_RTN_AMT
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT * FROM TAB_ORD_CNT
|
|
|
|
|
+ ) A
|
|
|
|
|
+ GROUP BY CUST_NO
|
|
|
|
|
+ ) X, TB_CUSTOMER Y
|
|
|
|
|
+ WHERE X.CUST_NO = Y.CUST_NO
|
|
|
|
|
+ GROUP BY X.CUST_NO
|
|
|
|
|
+ ORDER BY TOT_ORD_AMT DESC
|
|
|
|
|
+ LIMIT 50
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 미로그인현황 -->
|
|
|
|
|
+ <select id="getCustomerUnloginList" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getCustomerUnloginList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ X.*
|
|
|
|
|
+ , ROUND(CNT_5 / TOT_CNT * 100) AS PER_CNT_5
|
|
|
|
|
+ , ROUND(CNT_4 / TOT_CNT * 100) AS PER_CNT_4
|
|
|
|
|
+ , ROUND(CNT_3 / TOT_CNT * 100) AS PER_CNT_3
|
|
|
|
|
+ , ROUND(CNT_2 / TOT_CNT * 100) AS PER_CNT_2
|
|
|
|
|
+ , ROUND(CNT_1 / TOT_CNT * 100) AS PER_CNT_1
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ SUM(CASE WHEN GB = 5 THEN CNT ELSE 0 END) AS CNT_5
|
|
|
|
|
+ , SUM(CASE WHEN GB = 4 THEN CNT ELSE 0 END) AS CNT_4
|
|
|
|
|
+ , SUM(CASE WHEN GB = 3 THEN CNT ELSE 0 END) AS CNT_3
|
|
|
|
|
+ , SUM(CASE WHEN GB = 2 THEN CNT ELSE 0 END) AS CNT_2
|
|
|
|
|
+ , SUM(CASE WHEN GB = 1 THEN CNT ELSE 0 END) AS CNT_1
|
|
|
|
|
+ , SUM(CNT) AS TOT_CNT
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- 1년
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 5 AS GB -- 1년 ~
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 YEAR ), '%Y%m%d%H%i%s') -- now() 수정 : 조회시점의 시간까지만. ex) 2019년9월25일15시 조회 -> 20210925150000
|
|
|
|
|
+ -- 12개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 4 AS GB -- 9개월~12개월
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 YEAR ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -9 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ -- 9개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 3 AS GB -- 6개월~9개월
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -9 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ -- 6개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 2 AS GB -- 3개월~6개월
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ -- 3개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 1 AS GB -- ~3개월
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT < DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
|
|
|
|
|
+ ) Z
|
|
|
|
|
+ ) X
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 미로그인현황 회원리스트 -->
|
|
|
|
|
+ <select id="getCustomerUnloginInfoList" parameterType="Statistics" resultType="paramMap">
|
|
|
|
|
+ /* TsaStatistics.getCustomerUnloginInfoList */
|
|
|
|
|
+ SELECT (
|
|
|
|
|
+ SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
+ THEN A.CUST_ID
|
|
|
|
|
+ ELSE CONCAT(LEFT(A.CUST_ID, 3), REPEAT('*', CHAR_LENGTH(A.CUST_ID) - 3 ) )
|
|
|
|
|
+ END
|
|
|
|
|
+ FROM TB_USER
|
|
|
|
|
+ WHERE USER_NO = #{regNo}
|
|
|
|
|
+ ) AS CUST_ID
|
|
|
|
|
+ , (
|
|
|
|
|
+ SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
+ THEN A.CUST_NM
|
|
|
|
|
+ ELSE CONCAT(LEFT(A.CUST_NM, 1), REPEAT('*', CHAR_LENGTH(A.CUST_NM) - 1 ) )
|
|
|
|
|
+ END
|
|
|
|
|
+ FROM TB_USER
|
|
|
|
|
+ WHERE USER_NO = #{regNo}
|
|
|
|
|
+ ) AS CUST_NM
|
|
|
|
|
+ , (
|
|
|
|
|
+ SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
+ THEN A.CELL_PHNNO
|
|
|
|
|
+ ELSE CONCAT(substr(A.CELL_PHNNO, 1, 4), '****', substr(A.CELL_PHNNO, 9, 13))
|
|
|
|
|
+ END
|
|
|
|
|
+ FROM TB_USER
|
|
|
|
|
+ WHERE USER_NO = #{regNo}
|
|
|
|
|
+ ) AS CELL_PHNNO
|
|
|
|
|
+ , (
|
|
|
|
|
+ SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
+ THEN A.EMAIL
|
|
|
|
|
+ ELSE CONCAT(LEFT(A.EMAIL, 2), REPEAT('*', instr(A.EMAIL, '@') - 3), SUBSTRING(A.EMAIL, instr(EMAIL, '@'), LENGTH(A.EMAIL)))
|
|
|
|
|
+ END
|
|
|
|
|
+ FROM TB_USER
|
|
|
|
|
+ WHERE USER_NO = #{regNo}
|
|
|
|
|
+ ) AS EMAIL
|
|
|
|
|
+ , MONTHS
|
|
|
|
|
+ , BIRTH_YM
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT CUST_ID
|
|
|
|
|
+ , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
+ , TIMESTAMPDIFF(MONTH, LOGIN_LDT, NOW()) AS MONTHS
|
|
|
|
|
+ , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
+ THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
+ ELSE CELL_PHNNO
|
|
|
|
|
+ END AS CELL_PHNNO
|
|
|
|
|
+ , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
+ , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT <![CDATA[ < ]]> DATE_FORMAT(STR_TO_DATE(DATE_FORMAT(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), '%Y%m%d%H'), '%Y%m%d%H'), '%Y-%m-%d %H:%i:%s') -- now() 수정 : 조회시점의 시간까지만. ex) 2019년9월25일15시 조회 -> 20210925150000
|
|
|
|
|
+ ) A
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 마케팅수신동의현황 -->
|
|
|
|
|
+ <select id="getCustomerMarketingList" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getCustomerMarketingList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ X.*
|
|
|
|
|
+ , ROUND(CNT_4 / TOT_CNT * 100) AS PER_CNT_4
|
|
|
|
|
+ , ROUND(CNT_3 / TOT_CNT * 100) AS PER_CNT_3
|
|
|
|
|
+ , ROUND(CNT_2 / TOT_CNT * 100) AS PER_CNT_2
|
|
|
|
|
+ , ROUND(CNT_1 / TOT_CNT * 100) AS PER_CNT_1
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT SUM(CASE WHEN GB = 4 THEN CNT ELSE 0 END) AS CNT_4
|
|
|
|
|
+ , SUM(CASE WHEN GB = 3 THEN CNT ELSE 0 END) AS CNT_3
|
|
|
|
|
+ , SUM(CASE WHEN GB = 2 THEN CNT ELSE 0 END) AS CNT_2
|
|
|
|
|
+ , SUM(CASE WHEN GB = 1 THEN CNT ELSE 0 END) AS CNT_1
|
|
|
|
|
+ , SUM(CNT) AS TOT_CNT
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- SMS
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 4 AS GB
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND SMS_AGREE_YN = 'Y'
|
|
|
|
|
+ -- EMAIL
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 3 AS GB
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND EMAIL_AGREE_YN = 'Y'
|
|
|
|
|
+ -- 푸쉬
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 2 AS GB
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND APP_AGREE_YN = 'Y'
|
|
|
|
|
+ -- 미동의
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 1 AS GB
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND SMS_AGREE_YN = 'N'
|
|
|
|
|
+ AND EMAIL_AGREE_YN = 'N'
|
|
|
|
|
+ AND APP_AGREE_YN = 'N'
|
|
|
|
|
+ ) Z
|
|
|
|
|
+ ) X
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 휴면전환 잔여일별현황 -->
|
|
|
|
|
+ <select id="getCustomerDormRemainList" resultType="Statistics">
|
|
|
|
|
+ /* TsaStatistics.getCustomerDormRemainList */
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ SUM(CASE WHEN GB = 4 THEN CNT ELSE 0 END) AS CNT_4 -- 12개월
|
|
|
|
|
+ , SUM(CASE WHEN GB = 3 THEN CNT ELSE 0 END) AS CNT_3 -- 9개월
|
|
|
|
|
+ , SUM(CASE WHEN GB = 2 THEN CNT ELSE 0 END) AS CNT_2 -- 6개월
|
|
|
|
|
+ , SUM(CASE WHEN GB = 1 THEN CNT ELSE 0 END) AS CNT_1 -- 9개월
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- 12개월
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 4 AS GB -- 12개월
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 DAY ), '%Y%m%d%H%i%s') -- now() 수정 : 조회시점의 시간까지만. ex) 2019년9월25일15시 조회 -> 20210925150000
|
|
|
|
|
+ -- 9개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 3 AS GB -- 9개월
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 DAY ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ -- 6개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 2 AS GB -- 6개월
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ -- 3개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT COUNT(1) AS CNT
|
|
|
|
|
+ , 1 AS GB -- ~3개월
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -9 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT < DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ ) Z
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 휴면전환 잔여일별현황 회원리스트 -->
|
|
|
|
|
+ <select id="getCustomerDormRemainInfoList" parameterType="Statistics" resultType="paramMap">
|
|
|
|
|
+ /* TsaStatistics.getCustomerDormRemainInfoList */
|
|
|
|
|
+ SELECT GB
|
|
|
|
|
+ , BIRTH_YM
|
|
|
|
|
+ , (
|
|
|
|
|
+ SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
+ THEN A.CUST_ID
|
|
|
|
|
+ ELSE CONCAT(LEFT(A.CUST_ID, 3), REPEAT('*', CHAR_LENGTH(A.CUST_ID) - 3 ) )
|
|
|
|
|
+ END
|
|
|
|
|
+ FROM TB_USER
|
|
|
|
|
+ WHERE USER_NO = #{regNo}
|
|
|
|
|
+ ) AS CUST_ID
|
|
|
|
|
+ , (
|
|
|
|
|
+ SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
+ THEN A.CUST_NM
|
|
|
|
|
+ ELSE CONCAT(LEFT(A.CUST_NM, 1), REPEAT('*', CHAR_LENGTH(A.CUST_NM) - 1 ) )
|
|
|
|
|
+ END
|
|
|
|
|
+ FROM TB_USER
|
|
|
|
|
+ WHERE USER_NO = #{regNo}
|
|
|
|
|
+ ) AS CUST_NM
|
|
|
|
|
+ , (
|
|
|
|
|
+ SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
+ THEN A.CELL_PHNNO
|
|
|
|
|
+ ELSE CONCAT(substr(A.CELL_PHNNO, 1, 4), '****', substr(A.CELL_PHNNO, 9, 13))
|
|
|
|
|
+ END
|
|
|
|
|
+ FROM TB_USER
|
|
|
|
|
+ WHERE USER_NO = #{regNo}
|
|
|
|
|
+ ) AS CELL_PHNNO
|
|
|
|
|
+ , (
|
|
|
|
|
+ SELECT CASE WHEN ROLE_CD = 'G001_0000'
|
|
|
|
|
+ THEN A.EMAIL
|
|
|
|
|
+ ELSE CONCAT(LEFT(A.EMAIL, 2), REPEAT('*', instr(A.EMAIL, '@') - 3), SUBSTRING(A.EMAIL, instr(EMAIL, '@'), LENGTH(A.EMAIL)))
|
|
|
|
|
+ END
|
|
|
|
|
+ FROM TB_USER
|
|
|
|
|
+ WHERE USER_NO = #{regNo}
|
|
|
|
|
+ ) AS EMAIL
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- 12개월
|
|
|
|
|
+ SELECT '12개월' AS GB -- 12개월
|
|
|
|
|
+ , CUST_ID
|
|
|
|
|
+ , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
+ , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
+ THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
+ ELSE CELL_PHNNO
|
|
|
|
|
+ END AS CELL_PHNNO
|
|
|
|
|
+ , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
+ , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT > DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 DAY ), '%Y%m%d%H%i%s') -- now() 수정 : 조회시점의 시간까지만. ex) 2019년9월25일15시 조회 -> 20210925150000
|
|
|
|
|
+ -- 9개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT '9개월' AS GB -- 9개월
|
|
|
|
|
+ , CUST_ID
|
|
|
|
|
+ , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
+ , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
+ THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
+ ELSE CELL_PHNNO
|
|
|
|
|
+ END AS CELL_PHNNO
|
|
|
|
|
+ , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
+ , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT <![CDATA[ < ]]> DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -1 DAY ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ -- 6개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT '6개월' AS GB -- 6개월
|
|
|
|
|
+ , CUST_ID
|
|
|
|
|
+ , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
+ , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
+ THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
+ ELSE CELL_PHNNO
|
|
|
|
|
+ END AS CELL_PHNNO
|
|
|
|
|
+ , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
+ , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT <![CDATA[ < ]]> DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -3 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ -- 3개월
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+ SELECT '3개월' AS GB -- ~3개월
|
|
|
|
|
+ , CUST_ID
|
|
|
|
|
+ , FN_DEC_AES(CUST_NM) AS CUST_NM
|
|
|
|
|
+ , CASE WHEN CELL_PHNNO != 'xx'
|
|
|
|
|
+ THEN FN_DEC_AES(CELL_PHNNO)
|
|
|
|
|
+ ELSE CELL_PHNNO
|
|
|
|
|
+ END AS CELL_PHNNO
|
|
|
|
|
+ , FN_DEC_AES(EMAIL) AS EMAIL
|
|
|
|
|
+ , SUBSTRING(FN_DEC_AES(BIRTH_YMD), 1, 6) AS BIRTH_YM
|
|
|
|
|
+ FROM TB_CUSTOMER
|
|
|
|
|
+ WHERE CUST_NO > 0
|
|
|
|
|
+ AND CUST_STAT = 'G104_10'
|
|
|
|
|
+ AND LOGIN_LDT >= DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -9 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ AND LOGIN_LDT <![CDATA[ < ]]> DATE_FORMAT(DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H'), '%Y%m%d%H'), INTERVAL -6 MONTH ), '%Y%m%d%H%i%s')
|
|
|
|
|
+ ) A
|
|
|
|
|
+ </select>
|
|
|
</mapper>
|
|
</mapper>
|