|
|
@@ -1193,7 +1193,7 @@
|
|
|
, CPN_NM -- 쿠폰명
|
|
|
, BURDEN -- 자사분담율
|
|
|
, DOWN_CNT
|
|
|
- , FLOOR(USE_CNT / DOWN_CNT * 100 * 10) / 10 AS USE_RATE -- 사용율
|
|
|
+ , ROUND((USE_CNT / DOWN_CNT) * 100 * 100) / 10 / 10 AS USE_RATE
|
|
|
, USE_CNT -- 사용수
|
|
|
, ORD_AMT -- 주문금액
|
|
|
, CPN_AMT -- 쿠폰비용
|
|
|
@@ -1231,7 +1231,7 @@
|
|
|
, Z.ORD_QTY
|
|
|
, Z.CUST_CNT
|
|
|
, X.CUST_CPN_CNT
|
|
|
- , FLOOR((X.CUST_CPN_CNT / Z.CUST_CNT * 100) / 10) * 10 AS ORD_RATE
|
|
|
+ , ROUND((X.CUST_CPN_CNT / Z.CUST_CNT * 100 * 100) / 10) / 10 AS ORD_RATE
|
|
|
FROM (
|
|
|
SELECT
|
|
|
A.BRAND_CD
|
|
|
@@ -1339,21 +1339,23 @@
|
|
|
]]>
|
|
|
AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
|
|
|
AND B.ORD_QTY > B.CNCL_RTN_QTY
|
|
|
- <if test="applyGbArr == null">
|
|
|
- /* 프로모션유형값없을시 */
|
|
|
- AND (B.TMTB1_DC_AMT + B.TMTB2_DC_AMT) > 0
|
|
|
- </if>
|
|
|
- <if test="applyGbArr != null">
|
|
|
- /* 프로모션유형 */
|
|
|
- <foreach collection="applyGbArr" item="item" index="index">
|
|
|
- <if test='item == "G810_10"'>
|
|
|
- AND TMTB1_DC_AMT > 0 -- 수량
|
|
|
- </if>
|
|
|
- <if test='item == "G810_11"'>
|
|
|
- AND TMTB2_DC_AMT > 0 -- 금액
|
|
|
- </if>
|
|
|
- </foreach>
|
|
|
- </if>
|
|
|
+ <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 (
|
|
|
@@ -1468,7 +1470,7 @@
|
|
|
GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
|
|
|
</select>
|
|
|
|
|
|
- <!-- 사은품 주문조회 -->
|
|
|
+ <!-- 기획전 주문조회 -->
|
|
|
<select id="getPlanOrderList" parameterType="Statistics" resultType="Statistics">
|
|
|
/* TsaStatistics.getPlanOrderList */
|
|
|
SELECT
|
|
|
@@ -1501,18 +1503,18 @@
|
|
|
]]>
|
|
|
AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
|
|
|
AND B.ORD_QTY > B.CNCL_RTN_QTY
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
- /* 물류구분 */
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index">
|
|
|
- <if test="item == 'SCM'">
|
|
|
- AND C.DISTRIBUTION_GB = 'G065_20' -- 입점
|
|
|
- </if>
|
|
|
- <if test="item == 'WMS'">
|
|
|
- AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12') -- 위탁
|
|
|
- </if>
|
|
|
- </foreach>
|
|
|
- </if>
|
|
|
- <if test="multiTmtbSq != null">
|
|
|
+ <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>
|
|
|
@@ -1521,7 +1523,7 @@
|
|
|
GROUP BY DISTRIBUTION_GB, BRAND_ENM, PLAN_SQ
|
|
|
</select>
|
|
|
|
|
|
- <!-- 사은품 주문상세 조회 -->
|
|
|
+ <!-- 기획전 주문상세 조회 -->
|
|
|
<select id="getPlanOrderDetailList" parameterType="Statistics" resultType="Statistics">
|
|
|
/* TsaStatistics.getPlanOrderDetailList */
|
|
|
WITH TAB AS (
|
|
|
@@ -1556,7 +1558,7 @@
|
|
|
, SUM(ORD_AMT) AS ORD_AMT
|
|
|
, SUM(ORD_QTY) AS ORD_QTY
|
|
|
, SUM(CUST_CNT) AS CUST_CNT
|
|
|
- , FLOOR((SUM(CUST_CNT) / (SELECT TOT_CUST_CNT FROM TAB) * 100) / 10) * 10 AS ORD_RATE
|
|
|
+ , 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
|
|
|
@@ -1581,17 +1583,6 @@
|
|
|
]]>
|
|
|
AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
|
|
|
AND B.ORD_QTY > B.CNCL_RTN_QTY
|
|
|
- <if test="multiDistributionGb != null">
|
|
|
- /* 물류구분 */
|
|
|
- <foreach collection="multiDistributionGb" item="item" index="index">
|
|
|
- <if test="item == 'SCM'">
|
|
|
- AND C.DISTRIBUTION_GB = 'G065_20' -- 입점
|
|
|
- </if>
|
|
|
- <if test="item == 'WMS'">
|
|
|
- AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12') -- 위탁
|
|
|
- </if>
|
|
|
- </foreach>
|
|
|
- </if>
|
|
|
AND E.PLAN_SQ = #{planSq}
|
|
|
GROUP BY C.DISTRIBUTION_GB, C.GOODS_CD, C.GOODS_NM, A.CUST_NO
|
|
|
) X
|
|
|
@@ -1882,4 +1873,840 @@
|
|
|
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>
|