merge master into develop - CscListRForm.jsp FAQ 아코디언 버그 수정

This commit is contained in:
jilee4unity
2026-05-28 23:34:06 +09:00
7250 changed files with 570509 additions and 25 deletions

View File

@@ -0,0 +1,936 @@
<?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.wb.domainserver.domain.gcone.stats.marktAnals.mapper.BOMarktAnalsMapper">
<!--
어제 데이터 조회
# 일별 유입수
-->
<select id="selectBOMngrMainDalyInflowCntInqire"
parameterType = "DataMap"
resultType="DataMap">
<![CDATA[
SELECT
COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
FROM
GC_ACCESS_STAT A
WHERE 1 = 1
AND A.SOPMAL_CD = #{sopmalCd}
AND DATE(A.BGN_DT) = CURDATE() - INTERVAL 1 DAY
]]>
</select>
<!--
#21 일별 시간대별 유입수와 결제수
-->
<select id="selectBOHourlySetleCntInflowCntInqire"
parameterType = "DataMap"
resultType="DataMap">
<![CDATA[
WITH RECURSIVE Hours AS (
SELECT 1 AS HR
UNION ALL
SELECT HR + 1
FROM Hours
WHERE HR < 24
)
SELECT
CONCAT( LPAD(H.HR, 2, '0'), '시') AS DT,
COALESCE(SUM(A.ACCESS_USER_CNT), 0) AS ACCESS_USER_CNT,
COALESCE(SUM(O.ORDR_CNT), 0) AS ORDR_CNT
FROM Hours H
LEFT JOIN (
SELECT
DATE_FORMAT(BGN_DT, '%H') AS HR,
COUNT(DISTINCT AGENT_ID) AS ACCESS_USER_CNT
FROM GC_ACCESS_STAT A
WHERE A.SOPMAL_CD = #{sopmalCd}
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY HR
) A ON A.HR = H.HR
LEFT JOIN (
SELECT
DATE_FORMAT(SETLE_COMPT_DT, '%H') AS ORD_HR,
SUM(CASE WHEN ORRE_DV_CD = '01' and ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END) AS ORDR_CNT
FROM GC_ORRE_STAT O
WHERE O.SOPMAL_CD = #{sopmalCd}
AND O.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
AND O.ORDR_STTUS_CD between '25' and '85'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND O.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY ORD_HR
) O ON O.ORD_HR = H.HR
GROUP BY H.HR
ORDER BY H.HR ASC
]]>
</select>
<!--
# 통계 > 일별 유입수 및 결제수
-->
<select id="selectBODailyChartSetleCntInflowCntInqire"
parameterType = "DataMap"
resultType="DataMap">
<![CDATA[
WITH RECURSIVE DateSeries AS (
SELECT #{srchStrtSndngDt} AS DT
UNION ALL
SELECT DATE_ADD(DT, INTERVAL 1 DAY)
FROM DateSeries
WHERE DT < date_sub( #{srchEndSndngDt}, interval 1 day)
)
SELECT
DATE_FORMAT(DS.DT, '%Y%m%d') AS DT,
COALESCE(SUM(X.ACCESS_USER_CNT), 0) AS ACCESS_USER_CNT,
COALESCE(SUM(X.ORDR_CNT), 0) AS ORDR_CNT
FROM DateSeries DS
LEFT JOIN (
SELECT DATE_FORMAT(A.BGN_DT, '%Y%m%d') AS DT
, COUNT(DISTINCT A.AGENT_ID) AS ACCESS_USER_CNT
, 0 AS ORDR_CNT
FROM GC_ACCESS_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND CONCAT(#{srchEndSndngDt}, ' 23:59:59')
GROUP BY DATE_FORMAT(A.BGN_DT, '%Y%m%d')
UNION ALL
SELECT DATE_FORMAT(A.SETLE_COMPT_DT, '%Y%m%d') AS ORD_DT
, 0 AS ACCESS_USER_CNT
, SUM(CASE WHEN A.ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END) AS ORDR_CNT
FROM GC_ORRE_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND CONCAT(#{srchEndSndngDt}, ' 23:59:59')
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY DATE_FORMAT(A.SETLE_COMPT_DT, '%Y%m%d')
) X ON DATE_FORMAT(DS.DT, '%Y%m%d') = X.DT
GROUP BY DS.DT
ORDER BY DS.DT ASC
]]>
</select>
<!--
#주별 유입수와 결제수
-->
<select id="selectBOWeeklyChartSetleCntInflowCntInqire"
parameterType="DataMap"
resultType="DataMap">
<![CDATA[
SELECT
WEEK(DATE_SUB(X.DT, INTERVAL (WEEKDAY(X.DT) + 3) % 7 DAY), 1) AS YR_WK,
MIN(X.DT) AS DT,
COALESCE(SUM(X.ACCESS_USER_CNT), 0) AS ACCESS_USER_CNT,
COALESCE(SUM(X.ORDR_CNT), 0) AS ORDR_CNT
FROM (
SELECT DATE_FORMAT(BGN_DT , '%Y%m%d') AS DT
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
, 0 ORDR_CNT
FROM GC_ACCESS_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY DT
UNION ALL
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y%m%d') AS ORD_DT
, 0 ACCESS_USER_CNT
, SUM(CASE WHEN ORRE_DV_CD = '01' and ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
FROM GC_ORRE_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
AND A.ORDR_STTUS_CD NOT IN ('95','99') /* 추가 조건 */
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY ORD_DT
) X
GROUP BY YR_WK
ORDER BY DT ASC, YR_WK ASC
]]>
</select>
<!--
#월별 유입수와 결제수
-->
<select id="selectBOMonthlyChartSetleCntInflowCntInqire"
parameterType="DataMap"
resultType="DataMap">
<![CDATA[
SELECT
DT ,
COALESCE(SUM(X.ACCESS_USER_CNT), 0) AS ACCESS_USER_CNT,
COALESCE(SUM(X.ORDR_CNT), 0) AS ORDR_CNT
FROM (
SELECT DATE_FORMAT(BGN_DT , '%Y%m') AS DT
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
, 0 ORDR_CNT
FROM GC_ACCESS_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY DT
UNION ALL
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y%m') AS ORD_DT
, 0 ACCESS_USER_CNT
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
FROM GC_ORRE_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
AND A.ORDR_STTUS_CD NOT IN ('95','99') /* 추가 조건 */
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY ORD_DT
) X
GROUP BY DT
ORDER BY DT ASC
]]>
</select>
<!--
#21 일별 시간대별 결제금액
-->
<select id="selectBOHourlySetleAmtInqire"
parameterType = "DataMap"
resultType="DataMap">
<![CDATA[
WITH RECURSIVE cal_hr AS (
SELECT 1 AS HR
UNION ALL
SELECT HR + 1
FROM cal_hr
WHERE HR < 24
)
SELECT H.HR
, CONCAT( LPAD(H.HR, 2, '0'), '시') AS DT_HR
, COALESCE( SUM(ORDR_CNT), 0) AS ORDR_CNT #주문건수
, COALESCE( SUM(REFUND_CNT), 0) AS REFUND_CNT #환불건수
, COALESCE( SUM(RL_SETLE_AMT), 0) AS RL_SETLE_AMT #결제금액
, COALESCE( SUM(REFUND_AMT), 0) AS REFUND_AMT #환불금액
FROM cal_hr H
LEFT JOIN (
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%H') AS HR
, SUM(CASE WHEN ORRE_DV_CD = '01' and ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
, COUNT(DISTINCT CASE WHEN ORRE_DV_CD = '02' THEN PARNTS_ORDR_INNB ELSE NULL END ) AS REFUND_CNT
, SUM(case when ORDR_STTUS_CD between '25' and '75' then RL_SETLE_AMT else NULL end ) RL_SETLE_AMT
, SUM(REFUND_AMT) REFUND_AMT
FROM GC_ORRE_STAT A
WHERE A.SOPMAL_CD = #{sopmalCd}
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
AND ORDR_STTUS_CD between '25' and '85'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY HR
) TOT
ON TOT.HR = H.HR
GROUP BY H.HR
ORDER BY H.HR
]]>
</select>
<!--
#22 일별 유입수와 결제수 표 건수 조회
-->
<select id="selectBODailySetleCntInflowCntTableCntInqire"
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
resultType="java.lang.Integer">
<![CDATA[
SELECT
COUNT(*)
FROM (
SELECT
DT,
COALESCE( ACCESS_USER_CNT, 0) AS ACCESS_USER_CNT,
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT
FROM (
SELECT
DAY_T.DT,
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
SUM(ORDR_CNT) AS ORDR_CNT,
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
FROM (
WITH RECURSIVE DateSeries AS (
SELECT #{srchStrtSndngDt} AS DT
UNION ALL
SELECT DT + INTERVAL 1 DAY
FROM DateSeries
WHERE DT < #{srchEndSndngDt}
)
SELECT DATE_FORMAT(DS.DT, '%Y-%m-%d') AS DT
FROM DateSeries DS
) DAY_T
LEFT JOIN (
SELECT DATE_FORMAT(BGN_DT , '%Y-%m-%d') AS DT
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
, 0 AS ORDR_CNT
, 0 AS RL_SETLE_AMT
FROM GC_ACCESS_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY DT
UNION ALL
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y-%m-%d') AS ORD_DT
, 0 AS ACCESS_USER_CNT
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
, SUM(RL_SETLE_AMT) RL_SETLE_AMT
FROM GC_ORRE_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY ORD_DT
) X
ON DAY_T.DT = X.DT
GROUP BY DT
)A2
ORDER BY ${ordrFinal}
) AS TEMP
]]>
</select>
<!--
#12, 13.일별 실적 표 조회 표 조회
-->
<select id="selectBODailySetleCntInflowCntTableInqire"
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
resultType="DataMap">
<![CDATA[
SELECT
*
FROM (
SELECT
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
FROM (
SELECT
DT,
COALESCE( ACCESS_USER_CNT, 0) AS ACCESS_USER_CNT,
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT
FROM (
SELECT
DAY_T.DT,
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
SUM(ORDR_CNT) AS ORDR_CNT,
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
FROM (
WITH RECURSIVE DateSeries AS (
SELECT #{srchStrtSndngDt} AS DT
UNION ALL
SELECT DT + INTERVAL 1 DAY
FROM DateSeries
WHERE DT < date_sub( #{srchEndSndngDt}, interval 1 day)
)
SELECT DATE_FORMAT(DS.DT, '%Y-%m-%d') AS DT
FROM DateSeries DS
) DAY_T
LEFT JOIN (
SELECT DATE_FORMAT(BGN_DT , '%Y-%m-%d') AS DT
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
, 0 AS ORDR_CNT
, 0 AS RL_SETLE_AMT
FROM GC_ACCESS_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY DT
UNION ALL
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y-%m-%d') AS ORD_DT
, 0 AS ACCESS_USER_CNT
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
, SUM(RL_SETLE_AMT) RL_SETLE_AMT
FROM GC_ORRE_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY ORD_DT
) X
ON DAY_T.DT = X.DT
GROUP BY DT
)A2
ORDER BY ${ordrFinal}
) TB
WHERE (@rownum:=0)=0
) PV
WHERE 1=1
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
]]>
</select>
<!--
#22 별 시간대별 유입수와 결제수 표 건수 조회
-->
<select id="selectBODailyHourlySetleCntInflowCntTableCntInqire"
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
resultType="java.lang.Integer">
<![CDATA[
SELECT
COUNT(*)
FROM (
SELECT
DT,
HR,
ACCESS_USER_CNT,
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT
FROM (
SELECT
DT,
HR,
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
SUM(ORDR_CNT) AS ORDR_CNT,
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
FROM (
SELECT DT, HR
, 0 ACCESS_USER_CNT
, 0 ORDR_CNT
, 0 RL_SETLE_AMT
FROM (
-- 시간테이블
WITH RECURSIVE cal_day AS (
SELECT #{srchStrtSndngDt} DT
UNION ALL
SELECT
DT + interval 1 day
FROM
cal_day
WHERE
DT + interval 1 day <= #{srchEndSndngDt}
)
SELECT DT
FROM cal_day
) DAY_T
JOIN (
-- 시간테이블
WITH RECURSIVE cal_hr AS (
SELECT 1 HR
UNION ALL
SELECT
HR + 1
FROM
cal_hr
WHERE
HR + 1 <= 24
)
SELECT lpad(HR-1, 2, '0') HR
FROM cal_hr
) HR_T
ON 1=1
UNION ALL
SELECT DATE_FORMAT(BGN_DT , '%Y-%m-%d') AS DT
, DATE_FORMAT(BGN_DT , '%H') AS HR
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
, 0 AS ORDR_CNT
, 0 AS RL_SETLE_AMT
FROM GC_ACCESS_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY DT, HR
UNION ALL
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y-%m-%d') AS ORD_DT
, DATE_FORMAT(SETLE_COMPT_DT , '%H') AS ORD_HR
, 0 AS ACCESS_USER_CNT
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
, SUM(RL_SETLE_AMT) RL_SETLE_AMT
FROM GC_ORRE_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY ORD_DT, ORD_HR
) A
GROUP BY DT, HR
)A2
ORDER BY ${ordrFinal}
) AS TEMP
]]>
</select>
<!--
#22 일별 시간대별 유입수와 결제수 표 조회
-->
<select id="selectBODailyHourlySetleCntInflowCntTableInqire"
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
resultType="DataMap">
<![CDATA[
SELECT
*
FROM (
SELECT
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
FROM (
SELECT
DT,
HR,
ACCESS_USER_CNT,
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT
FROM (
SELECT
DT,
HR,
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
SUM(ORDR_CNT) AS ORDR_CNT,
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
FROM (
SELECT DT, HR
, 0 ACCESS_USER_CNT
, 0 ORDR_CNT
, 0 RL_SETLE_AMT
FROM (
-- 시간테이블
WITH RECURSIVE cal_day AS (
SELECT #{srchStrtSndngDt} DT
UNION ALL
SELECT
DT + interval 1 day
FROM
cal_day
WHERE
DT + interval 1 day <= #{srchEndSndngDt}
)
SELECT DT
FROM cal_day
) DAY_T
JOIN (
-- 시간테이블
WITH RECURSIVE cal_hr AS (
SELECT 1 HR
UNION ALL
SELECT
HR + 1
FROM
cal_hr
WHERE
HR + 1 <= 24
)
SELECT lpad(HR-1, 2, '0') HR
FROM cal_hr
) HR_T
ON 1=1
UNION ALL
SELECT DATE_FORMAT(BGN_DT , '%Y-%m-%d') AS DT
, DATE_FORMAT(BGN_DT , '%H') AS HR
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
, 0 AS ORDR_CNT
, 0 AS RL_SETLE_AMT
FROM GC_ACCESS_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY DT, HR
UNION ALL
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y-%m-%d') AS ORD_DT
, DATE_FORMAT(SETLE_COMPT_DT , '%H') AS ORD_HR
, 0 AS ACCESS_USER_CNT
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
, SUM(RL_SETLE_AMT) RL_SETLE_AMT
FROM GC_ORRE_STAT A
WHERE 1=1
AND A.SOPMAL_CD = #{sopmalCd}
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY ORD_DT, ORD_HR
) A
GROUP BY DT, HR
)A2
ORDER BY ${ordrFinal}
) TB
WHERE (@rownum:=0)=0
) PV
WHERE 1=1
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
]]>
</select>
<!--
쿠폰사용금액 표 건수 조회
-->
<select id="selectBOCoupUseValeTableCntInqire"
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
resultType="java.lang.Integer">
<![CDATA[
SELECT
COUNT(*)
FROM (
-- 장바구니 쿠폰
SELECT '장바구니' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
, COALESCE( cart.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
, COALESCE( cart.DISCOUNT_AMT, 0) AS DISCOUNT_AMT
, COALESCE( cart.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
FROM (
SELECT GD.COUPON_INNB
, GD.COUP_NM
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
FROM GC_DOWNLOAD GD
WHERE GD.SOPMAL_CD = #{sopmalCd}
AND GD.COUPON_STTUS_CD <> '04'
AND GD.BNEF_DV_CD = '03' -- 장바구니 쿠폰
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
GROUP BY GD.COUPON_INNB, GD.COUP_NM
) B
LEFT JOIN (
SELECT '장바구니' COUPON_DV, GD.COUPON_INNB, A.CART_COUP_NM AS COUPON_NM
, SUM(A.SLEPRIC * A.ORRE_QY) AS SLEPRIC_SUM
, SUM(A.CART_COUPON_DSCNT_UNIT * A.ORRE_QY + A.CART_COUPON_DSCNT_REST) AS DISCOUNT_AMT
, COUNT(DISTINCT CASE WHEN GD.COUPON_STTUS_CD = '03' THEN GD.DWLD_COUPON_INNB ELSE NULL END) AS COUPON_USE_DCNT
FROM GC_ORRE_GOPTN_STAT A
JOIN GC_DOWNLOAD GD
ON A.SOPMAL_CD = GD.SOPMAL_CD
AND A.CART_DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
WHERE A.SOPMAL_CD = #{sopmalCd}
AND A.CART_DWLD_COUPON_INNB > ''
AND A.ORRE_DV_CD = '01'
AND A.ORDR_STTUS_CD between '25' AND '75'
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY 1,2,3
) cart
ON cart.COUPON_INNB = B.COUPON_INNB
AND cart.COUPON_NM = B.COUP_NM
UNION ALL
-- 상품 쿠폰
SELECT '상품' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
, COALESCE( goods.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
, COALESCE( goods.DISCOUNT_AMT, 0) AS DISCOUNT_AMT
, COALESCE( goods.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
FROM(
SELECT GD.COUPON_INNB
, GD.COUP_NM
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
FROM GC_DOWNLOAD GD
WHERE GD.SOPMAL_CD = #{sopmalCd}
AND GD.COUPON_STTUS_CD <> '04'
AND GD.BNEF_DV_CD = '01' -- 상품 쿠폰
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
GROUP BY GD.COUPON_INNB, GD.COUP_NM
) B
LEFT JOIN (
SELECT '상품' COUPON_DV, GD.COUPON_INNB, A.GOODS_COUP_NM AS COUPON_NM
, SUM(A.SLEPRIC * A.ORRE_QY) AS SLEPRIC_SUM
, SUM(A.GOODS_COUPON_DSCNT_UNIT * A.ORRE_QY + A.GOODS_COUPON_DSCNT_REST) AS DISCOUNT_AMT
, COUNT(DISTINCT CASE WHEN GD.COUPON_STTUS_CD = '03' THEN GD.DWLD_COUPON_INNB ELSE NULL END) AS COUPON_USE_DCNT
FROM GC_ORRE_GOPTN_STAT A
JOIN GC_DOWNLOAD GD
ON A.SOPMAL_CD = GD.SOPMAL_CD
AND A.GOODS_DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
WHERE A.SOPMAL_CD = #{sopmalCd}
AND A.GOODS_DWLD_COUPON_INNB > ''
AND A.ORRE_DV_CD = '01'
AND A.ORDR_STTUS_CD between '25' AND '75'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY 1,2,3
) goods
ON goods.COUPON_INNB = B.COUPON_INNB
AND goods.COUPON_NM = B.COUP_NM
UNION ALL
-- 배송비 쿠폰
SELECT '배송' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
, COALESCE( dlvy.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
, COALESCE( dlvy.DLVY_DISCOUNT_AMT, 0) AS DISCOUNT_AMT
, COALESCE( dlvy.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
FROM (
SELECT GD.COUPON_INNB
, GD.COUP_NM
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
FROM GC_DOWNLOAD GD
WHERE GD.SOPMAL_CD = #{sopmalCd}
AND GD.COUPON_STTUS_CD <> '04'
AND GD.BNEF_DV_CD = '02' -- 배송비 쿠폰
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
GROUP BY GD.COUPON_INNB, GD.COUP_NM
) B
LEFT JOIN (
SELECT '배송' COUPON_DV, GD.COUPON_INNB, GD.COUP_NM AS COUPON_NM
, SUM(B.RL_SETLE_AMT) AS SLEPRIC_SUM
, SUM(A.DLVY_COUPON_DSCNT_AMT) AS DLVY_DISCOUNT_AMT
, COUNT(DISTINCT A.DWLD_COUPON_INNB) AS COUPON_USE_DCNT
FROM GC_ORDER_SHIPPING A
JOIN GC_ORDER B
ON A.SOPMAL_CD = B.SOPMAL_CD
AND A.ORDR_INNB = B.ORDR_INNB
JOIN GC_DOWNLOAD GD
ON A.SOPMAL_CD = GD.SOPMAL_CD
AND A.DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
WHERE A.SOPMAL_CD = #{sopmalCd}
AND A.DWLD_COUPON_INNB > ''
AND A.ORDR_STTUS_CD between '25' AND '75'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND B.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
AND B.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY 1,2,3
) dlvy
ON dlvy.COUPON_INNB = B.COUPON_INNB
AND dlvy.COUPON_NM = B.COUP_NM
ORDER BY ${ordrFinal}
) AS TEMP
]]>
</select>
<!--
쿠폰사용금액 표 조회
-->
<select id="selectBOCoupUseValeTableInqire"
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
resultType="DataMap">
<![CDATA[
SELECT
*
FROM (
SELECT
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
FROM (
-- 장바구니 쿠폰
SELECT '장바구니' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
, COALESCE( cart.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
, COALESCE( cart.DISCOUNT_AMT, 0) AS DISCOUNT_AMT
, COALESCE( cart.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
FROM (
SELECT GD.COUPON_INNB
, GD.COUP_NM
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
FROM GC_DOWNLOAD GD
WHERE GD.SOPMAL_CD = #{sopmalCd}
AND GD.COUPON_STTUS_CD <> '04'
AND GD.BNEF_DV_CD = '03' -- 장바구니 쿠폰
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
GROUP BY GD.COUPON_INNB, GD.COUP_NM
) B
LEFT JOIN (
SELECT '장바구니' COUPON_DV, GD.COUPON_INNB, A.CART_COUP_NM AS COUPON_NM
, SUM(A.SLEPRIC * A.ORRE_QY) AS SLEPRIC_SUM
, SUM(A.CART_COUPON_DSCNT_UNIT * A.ORRE_QY + A.CART_COUPON_DSCNT_REST) AS DISCOUNT_AMT
, COUNT(DISTINCT CASE WHEN GD.COUPON_STTUS_CD = '03' THEN GD.DWLD_COUPON_INNB ELSE NULL END) AS COUPON_USE_DCNT
FROM GC_ORRE_GOPTN_STAT A
JOIN GC_DOWNLOAD GD
ON A.SOPMAL_CD = GD.SOPMAL_CD
AND A.CART_DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
WHERE A.SOPMAL_CD = #{sopmalCd}
AND A.CART_DWLD_COUPON_INNB > ''
AND A.ORRE_DV_CD = '01'
AND A.ORDR_STTUS_CD between '25' AND '75'
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
GROUP BY 1,2,3
) cart
ON cart.COUPON_INNB = B.COUPON_INNB
AND cart.COUPON_NM = B.COUP_NM
UNION ALL
-- 상품 쿠폰
SELECT '상품' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
, COALESCE( goods.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
, COALESCE( goods.DISCOUNT_AMT, 0) AS DISCOUNT_AMT
, COALESCE( goods.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
FROM(
SELECT GD.COUPON_INNB
, GD.COUP_NM
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
FROM GC_DOWNLOAD GD
WHERE GD.SOPMAL_CD = #{sopmalCd}
AND GD.COUPON_STTUS_CD <> '04'
AND GD.BNEF_DV_CD = '01' -- 상품 쿠폰
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
GROUP BY GD.COUPON_INNB, GD.COUP_NM
) B
LEFT JOIN (
SELECT '상품' COUPON_DV, GD.COUPON_INNB, A.GOODS_COUP_NM AS COUPON_NM
, SUM(A.SLEPRIC * A.ORRE_QY) AS SLEPRIC_SUM
, SUM(A.GOODS_COUPON_DSCNT_UNIT * A.ORRE_QY + A.GOODS_COUPON_DSCNT_REST) AS DISCOUNT_AMT
, COUNT(DISTINCT CASE WHEN GD.COUPON_STTUS_CD = '03' THEN GD.DWLD_COUPON_INNB ELSE NULL END) AS COUPON_USE_DCNT
FROM GC_ORRE_GOPTN_STAT A
JOIN GC_DOWNLOAD GD
ON A.SOPMAL_CD = GD.SOPMAL_CD
AND A.GOODS_DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
WHERE A.SOPMAL_CD = #{sopmalCd}
AND A.GOODS_DWLD_COUPON_INNB > ''
AND A.ORRE_DV_CD = '01'
AND A.ORDR_STTUS_CD between '25' AND '75'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND A.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY 1,2,3
) goods
ON goods.COUPON_INNB = B.COUPON_INNB
AND goods.COUPON_NM = B.COUP_NM
UNION ALL
-- 배송비 쿠폰
SELECT '배송' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
, COALESCE( dlvy.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
, COALESCE( dlvy.DLVY_DISCOUNT_AMT, 0) AS DISCOUNT_AMT
, COALESCE( dlvy.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
FROM (
SELECT GD.COUPON_INNB
, GD.COUP_NM
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
FROM GC_DOWNLOAD GD
WHERE GD.SOPMAL_CD = #{sopmalCd}
AND GD.COUPON_STTUS_CD <> '04'
AND GD.BNEF_DV_CD = '02' -- 배송비 쿠폰
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
GROUP BY GD.COUPON_INNB, GD.COUP_NM
) B
LEFT JOIN (
SELECT '배송' COUPON_DV, GD.COUPON_INNB, GD.COUP_NM AS COUPON_NM
, SUM(B.RL_SETLE_AMT) AS SLEPRIC_SUM
, SUM(A.DLVY_COUPON_DSCNT_AMT) AS DLVY_DISCOUNT_AMT
, COUNT(DISTINCT A.DWLD_COUPON_INNB) AS COUPON_USE_DCNT
FROM GC_ORDER_SHIPPING A
JOIN GC_ORDER B
ON A.SOPMAL_CD = B.SOPMAL_CD
AND A.ORDR_INNB = B.ORDR_INNB
JOIN GC_DOWNLOAD GD
ON A.SOPMAL_CD = GD.SOPMAL_CD
AND A.DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
WHERE A.SOPMAL_CD = #{sopmalCd}
AND A.DWLD_COUPON_INNB > ''
AND A.ORDR_STTUS_CD between '25' AND '75'
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
AND B.SLE_ENVRN_CD IN
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
#{srchOrdrEnvrnCd}
</foreach>
</if>
<![CDATA[
AND B.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
GROUP BY 1,2,3
) dlvy
ON dlvy.COUPON_INNB = B.COUPON_INNB
AND dlvy.COUPON_NM = B.COUP_NM
ORDER BY ${ordrFinal}
) TB
WHERE (@rownum:=0)=0
) PV
WHERE 1=1
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
]]>
</select>
</mapper>