|
|
@@ -420,6 +420,45 @@
|
|
|
<!-- 제휴몰 주문 목록 조회 -->
|
|
|
<select id="getExtmallOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
/* TsaStatistics.getExtmallOrderList */
|
|
|
+ WITH YOY AS (
|
|
|
+ SELECT X.EXTMALL_ID
|
|
|
+ , SUM(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(STR_TO_DATE(#{endDt},'%Y-%m-%d'), 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>
|
|
|
+ GROUP BY X.EXTMALL_ID
|
|
|
+ )
|
|
|
SELECT EXTMALL_NM
|
|
|
, TOT_AMT
|
|
|
, SELL_QTY
|
|
|
@@ -435,12 +474,12 @@
|
|
|
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.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.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
|
|
|
@@ -480,6 +519,7 @@
|
|
|
</if>
|
|
|
),0) AS YOY_TOT_ORD_AMT /*전년동기대비매출액*/
|
|
|
FROM TB_STAT_ORD_DAY A
|
|
|
+ LEFT OUTER JOIN YOY AS B ON A.EXTMALL_ID = B.EXTMALL_ID
|
|
|
WHERE 1=1
|
|
|
AND A.EXTMALL_ID IS NOT NULL
|
|
|
<![CDATA[
|
|
|
@@ -522,6 +562,37 @@
|
|
|
<!-- 채널 주문목록 조회 -->
|
|
|
<select id="getChannelOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
/* TsaStatistics.getChannelOrderList */
|
|
|
+ WITH YOY AS (
|
|
|
+ SELECT X.AF_LINK_CD
|
|
|
+ , SUM(X.CHANNEL_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(STR_TO_DATE(#{endDt},'%Y-%m-%d'), 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>
|
|
|
+ GROUP BY X.AF_LINK_CD
|
|
|
+ )
|
|
|
SELECT AF_LINK_CD
|
|
|
, AF_LINK_NM
|
|
|
, CHANNEL_AMT
|
|
|
@@ -536,8 +607,8 @@
|
|
|
, ROUND(TOT_AMT / YOY_TOT_ORD_AMT * 100 - 100,1) AS YOY_RATE
|
|
|
FROM (
|
|
|
SELECT
|
|
|
- AF_LINK_CD
|
|
|
- , (SELECT AF_LINK_NM FROM TB_AF_LINK X WHERE X.AF_LINK_CD = A.AF_LINK_CD) AS AF_LINK_NM
|
|
|
+ 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 /* 판매수량 */
|
|
|
@@ -546,47 +617,15 @@
|
|
|
, 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)
|
|
|
- FROM TB_STAT_ORD_DAY X
|
|
|
- WHERE 1=1
|
|
|
- AND 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(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
- ]]>
|
|
|
- <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 /*전년동기대비매출액*/
|
|
|
+ , SUM(IFNULL(C.YOY_TOT_ORD_AMT,0)) AS YOY_TOT_ORD_AMT
|
|
|
FROM TB_STAT_ORD_DAY A
|
|
|
- WHERE 1=1
|
|
|
+ INNER JOIN TB_AF_LINK B ON A.AF_LINK_CD = B.AF_LINK_CD
|
|
|
+ LEFT OUTER JOIN YOY C ON A.AF_LINK_CD = C.AF_LINK_CD
|
|
|
+ WHERE B.AF_CHANNEL != 'G053_01'
|
|
|
<![CDATA[
|
|
|
- AND DAY >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
- AND DAY <= DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
+ 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)
|
|
|
]]>
|
|
|
- AND EXISTS(
|
|
|
- SELECT 1
|
|
|
- FROM TB_AF_LINK X
|
|
|
- WHERE X.AF_LINK_CD = A.AF_LINK_CD
|
|
|
- AND X.AF_CHANNEL != 'G053_01'
|
|
|
- )
|
|
|
<if test="multiFrontGb != null">
|
|
|
/* 디바이스 */
|
|
|
<foreach collection="multiFrontGb" item="item" index="index" open="AND A.FRONT_GB IN (" close=")" separator=",">#{item}</foreach>
|
|
|
@@ -608,7 +647,6 @@
|
|
|
<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>
|
|
|
@@ -616,6 +654,48 @@
|
|
|
<!-- 브랜드 주문목록 조회 -->
|
|
|
<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 >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
|
|
|
+ AND X.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 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 /*브랜드명*/
|
|
|
@@ -641,7 +721,7 @@
|
|
|
, 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 /*이월매출*/
|
|
|
- , X.YOY_TOT_ORD_AMT
|
|
|
+ , YOY_TOT_ORD_AMT
|
|
|
FROM (
|
|
|
SELECT
|
|
|
A.BRAND_CD -- 브랜드코드
|
|
|
@@ -653,48 +733,10 @@
|
|
|
, 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 -- 취/반품액
|
|
|
- , IFNULL((SELECT SUM(X.SELF_AMT + X.CHANNEL_AMT + X.EXTMALL_AMT - X.CNCL_AMT - X.RTN_AMT)
|
|
|
- FROM TB_STAT_ORD_DAY X
|
|
|
- WHERE A.BRAND_CD = X.BRAND_CD
|
|
|
- <![CDATA[
|
|
|
- AND X.DAY >= DATE_ADD(STR_TO_DATE(#{startDt},'%Y-%m-%d'), INTERVAL -1 YEAR)
|
|
|
- AND X.DAY <= DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'), 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>
|
|
|
- ),0) AS YOY_TOT_ORD_AMT /*전년동기대비매출액*/
|
|
|
- FROM TB_STAT_ORD_DAY A, TB_BRAND B
|
|
|
+ , C.YOY_TOT_ORD_AMT
|
|
|
+ FROM TB_STAT_ORD_DAY A, TB_BRAND B, YOY C
|
|
|
WHERE A.BRAND_CD = B.BRAND_CD
|
|
|
+ AND A.BRAND_CD = C.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)
|
|
|
@@ -738,4 +780,255 @@
|
|
|
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(#{compStDt},'%Y-%m-%d'), INTERVAL (DATE_FORMAT(#{compStDt}, '%Y%m%d') - DATE_FORMAT(#{compEdDt}, '%Y%m%d')) -1 DAY)
|
|
|
+ AND A.DAY_TIME < DATE_ADD(DATE_FORMAT(#{compEdDt}, '%Y%m%d'), INTERVAL (DATE_FORMAT(#{compStDt}, '%Y%m%d') - DATE_ADD(DATE_FORMAT(#{compEdDt}, '%Y%m%d'), INTERVAL 1 DAY)) * -1 DAY)
|
|
|
+ ]]>
|
|
|
+ </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>
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ <if test="dtGb == null">
|
|
|
+ <![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>
|
|
|
+ <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 / B.ORD_AMT * 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 -- 소분류
|
|
|
+ , SUM(A.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) AS TOT_AMT /*총매출*/
|
|
|
+ , SUM(A.SELF_AMT + A.CHANNEL_AMT) AS SELFMALL_AMT /*자사몰매출*/
|
|
|
+ , SUM(A.EXTMALL_AMT) AS EXTMALL_AMT /*제휴몰매출*/
|
|
|
+ FROM TB_STAT_ORD_DAY 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.SELF_AMT + A.CHANNEL_AMT + A.EXTMALL_AMT - A.CNCL_AMT - A.RTN_AMT) > 0
|
|
|
+ <![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, T4.FULL_CATE_NM
|
|
|
+ </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>
|
|
|
+
|
|
|
</mapper>
|