배너클릭 성능개선

This commit is contained in:
itn 2023-09-07 15:15:12 +09:00
parent 5a454d7063
commit 9d720302e8

View File

@ -6,141 +6,131 @@
<typeAlias alias="popSrhVO" type="itn.let.sym.log.clg.service.PopSrhVO"/>
<!-- 일별 문자발송 건수 -->
<!-- 일별 배너클릭 건수 -->
<select id="etcStatDAO.selectBannerClickStatDay" parameterClass="etcStatVO" resultClass="etcStatVO">
SELECT COUNT(X1.creatDt) OVER() AS totCnt,
X1.creatDt as statDate,
X1.CNT1 AS menuClickCnt, /* 배너위치 페이지 접속 수 */
IFNULL (X2.CLICK_A_CNT, 0 ) as bannerClickCnt, /* 배너 클릭수 */
ROUND(IFNULL (X2.CLICK_A_CNT, 0 ) / X1.CNT1 * 100, 2 ) AS bannerClickRate /* (배너) 클릭률 */
SELECT
M2.totCnt
, M2.statDate
, IFNULL(M2.menuClickCnt, 0) menuClickCnt
, IFNULL(M2.bannerClickCnt, 0) bannerClickCnt
, ROUND(IFNULL(M2.bannerClickCnt, 0) / IFNULL(M2.menuClickCnt, 0) * 100, 2 ) AS bannerClickRate
FROM
( SELECT
COUNT(0) OVER() AS totCnt
, M.CREAT_DT AS statDate
, M.CNT AS menuClickCnt
, (
SELECT CLICK_A_CNT FROM MJ_BANNER_CLICK_STAT S
WHERE S.STAT_DATE = M.CREAT_DT
AND S.BANNER_CODE = #bannerCode#
AND S.MENU_CODE = #menuCode#
) bannerClickCnt
FROM
(
SELECT creatDt, COUNT(creatDt) AS CNT1
FROM ( SELECT LOG_ID,
(DATE_FORMAT(A.CREAT_DT, '%Y-%m-%d') ) AS creatDt
SELECT
(DATE_FORMAT(A.CREAT_DT, '%Y-%m-%d')) AS CREAT_DT
, COUNT(0) CNT
FROM lettnloginlog A
WHERE 1=1
<isEqual prepend="AND" property="menuCode" compareValue="01">
/* 메뉴코드 01 : 메인 */
<![CDATA[ url = #menuUrl# ]]>
<isEqual property="menuCode" compareValue="01">
AND SUBSTR(URL, 1,21) = #menuUrl#
</isEqual>
<isEqual prepend="AND" property="menuCode" compareValue="02">
/* 메뉴코드 02 : 로그인 : 로그인 경우 파라미터 붙는 경우 있어서 뒤 문자열 자름 */
<![CDATA[ substr(url, 1,24) = #menuUrl# ]]>
<isEqual property="menuCode" compareValue="02">
AND SUBSTR(URL, 1,24) = #menuUrl#
</isEqual>
) A1
WHERE 1=1
<isNotEmpty property="ntceBgnde">
<![CDATA[ AND creatDt BETWEEN #ntceBgnde# AND #ntceEndde# ]]>
</isNotEmpty>
GROUP BY creatDt
ORDER BY creatDt DESC
) X1 /* 메뉴클릭 정보 */
LEFT OUTER JOIN
(
SELECT STAT_DATE AS creatDt, CLICK_A_CNT from mj_banner_click_stat
WHERE 1=1
<isNotEmpty property="ntceBgnde">
<![CDATA[ AND STAT_DATE BETWEEN #ntceBgnde# AND #ntceEndde# ]]>
</isNotEmpty>
<![CDATA[ AND BANNER_CODE = #bannerCode# ]]>
<![CDATA[ AND MENU_CODE = #menuCode# ]]>
) X2 /* 배너 클릭 정보 */
ON X1.creatDt = X2.creatDt
ORDER BY X1.creatDt desc
<![CDATA[
AND A.CREAT_DT >= #ntceBgnde#
AND A.CREAT_DT < DATE_ADD(#ntceEndde#, INTERVAL 1 DAY)
]]>
GROUP BY DATE_FORMAT(A.CREAT_DT, '%Y-%m-%d')
LIMIT #recordCountPerPage# OFFSET #firstIndex#
) M
) M2
ORDER BY M2.statDate DESC
</select>
<!-- 월별 문자발송 건수 -->
<!-- 월별 배너클릭 건수 -->
<select id="etcStatDAO.selectBannerClickStatMonth" parameterClass="etcStatVO" resultClass="etcStatVO">
SELECT
COUNT(X1.creatDt) OVER() AS totCnt,
X1.creatDt as statDate,
X1.CNT1 AS menuClickCnt, /* 배너위치 페이지 접속 수 */
IFNULL (X2.CLICK_A_CNT, 0 ) as bannerClickCnt, /* 배너 클릭수 */
ROUND(IFNULL (X2.CLICK_A_CNT, 0 ) / X1.CNT1 * 100, 2 ) AS bannerClickRate /* (배너) 클릭률 */
M2.totCnt
, M2.statDate
, IFNULL(M2.menuClickCnt, 0) menuClickCnt
, IFNULL(M2.bannerClickCnt, 0) bannerClickCnt
, ROUND(IFNULL(M2.bannerClickCnt, 0) / IFNULL(M2.menuClickCnt, 0) * 100, 2 ) AS bannerClickRate
FROM
( SELECT
COUNT(0) OVER() AS totCnt
, M.CREAT_DT AS statDate
, M.CNT AS menuClickCnt
, (
SELECT SUM(CLICK_A_CNT) FROM MJ_BANNER_CLICK_STAT S
WHERE DATE_FORMAT(S.STAT_DATE, '%Y-%m') = M.CREAT_DT
AND S.BANNER_CODE = #bannerCode#
AND S.MENU_CODE = #menuCode#
) bannerClickCnt
FROM
(
SELECT creatDt, COUNT(creatDt) AS CNT1
FROM ( SELECT LOG_ID, (DATE_FORMAT(A.CREAT_DT, '%Y-%m') ) AS creatDt
SELECT
(DATE_FORMAT(A.CREAT_DT, '%Y-%m')) AS CREAT_DT
, COUNT(0) CNT
FROM lettnloginlog A
WHERE 1=1
<isEqual prepend="AND" property="menuCode" compareValue="01">
/* 메뉴코드 01 : 메인 */
<![CDATA[ url = #menuUrl# ]]>
<isEqual property="menuCode" compareValue="01">
AND SUBSTR(URL, 1,21) = #menuUrl#
</isEqual>
<isEqual prepend="AND" property="menuCode" compareValue="02">
/* 메뉴코드 02 : 로그인 : 로그인 경우 파라미터 붙는 경우 있어서 뒤 문자열 자름 */
<![CDATA[ substr(url, 1,24) = #menuUrl# ]]>
<isEqual property="menuCode" compareValue="02">
AND SUBSTR(URL, 1,24) = #menuUrl#
</isEqual>
<![CDATA[ AND (DATE_FORMAT(A.CREAT_DT, '%Y') ) = #searchYear# ]]>
) A1
WHERE 1=1
GROUP BY creatDt
) X1
LEFT OUTER JOIN
(
SELECT SUBSTR(STAT_DATE, 1,7) creatDt, SUM(CLICK_A_CNT) AS CLICK_A_CNT
from mj_banner_click_stat
WHERE 1=1
<![CDATA[ AND SUBSTR(STAT_DATE, 1,4) = #searchYear# ]]>
<![CDATA[ AND BANNER_CODE = #bannerCode# ]]>
<![CDATA[ AND MENU_CODE = #menuCode# ]]>
GROUP BY SUBSTR(STAT_DATE, 1,7)
) X2
ON X1.creatDt = X2.creatDt
ORDER BY X1.creatDt desc
<![CDATA[
AND DATE_FORMAT(A.CREAT_DT, '%Y') = #searchYear#
]]>
GROUP BY DATE_FORMAT(A.CREAT_DT, '%Y-%m')
LIMIT #recordCountPerPage# OFFSET #firstIndex#
) M
) M2
ORDER BY M2.statDate DESC
</select>
<!-- 연별 문자발송 건수 -->
<!-- 연별 배너클릭 건수 -->
<select id="etcStatDAO.selectBannerClickStatYear" parameterClass="etcStatVO" resultClass="etcStatVO">
SELECT
COUNT(X1.creatDt) OVER() AS totCnt,
X1.creatDt as statDate,
X1.CNT1 AS menuClickCnt, /* 배너위치 페이지 접속 수 */
IFNULL (X2.CLICK_A_CNT, 0 ) as bannerClickCnt, /* 배너 클릭수 */
ROUND(IFNULL (X2.CLICK_A_CNT, 0 ) / X1.CNT1 * 100, 2 ) AS bannerClickRate /* (배너) 클릭률 */
M2.totCnt
, M2.statDate
, IFNULL(M2.menuClickCnt, 0) menuClickCnt
, IFNULL(M2.bannerClickCnt, 0) bannerClickCnt
, ROUND(IFNULL(M2.bannerClickCnt, 0) / IFNULL(M2.menuClickCnt, 0) * 100, 2 ) AS bannerClickRate
FROM
( SELECT
COUNT(0) OVER() AS totCnt
, M.CREAT_DT AS statDate
, M.CNT AS menuClickCnt
, (
SELECT SUM(CLICK_A_CNT) FROM MJ_BANNER_CLICK_STAT S
WHERE DATE_FORMAT(S.STAT_DATE, '%Y') = M.CREAT_DT
AND S.BANNER_CODE = #bannerCode#
AND S.MENU_CODE = #menuCode#
) bannerClickCnt
FROM
(
SELECT creatDt, COUNT(creatDt) AS CNT1
FROM ( SELECT LOG_ID, (DATE_FORMAT(A.CREAT_DT, '%Y') ) AS creatDt
SELECT
(DATE_FORMAT(A.CREAT_DT, '%Y')) AS CREAT_DT
, COUNT(0) CNT
FROM lettnloginlog A
WHERE 1=1
<isEqual prepend="AND" property="menuCode" compareValue="01">
/* 메뉴코드 01 : 메인 */
<![CDATA[ url = #menuUrl# ]]>
<isEqual property="menuCode" compareValue="01">
AND SUBSTR(URL, 1,21) = #menuUrl#
</isEqual>
<isEqual prepend="AND" property="menuCode" compareValue="02">
/* 메뉴코드 02 : 로그인 : 로그인 경우 파라미터 붙는 경우 있어서 뒤 문자열 자름 */
<![CDATA[ substr(url, 1,24) = #menuUrl# ]]>
<isEqual property="menuCode" compareValue="02">
AND SUBSTR(URL, 1,24) = #menuUrl#
</isEqual>
<![CDATA[ AND (DATE_FORMAT(A.CREAT_DT, '%Y') ) = #searchYear# ]]>
) A1
WHERE 1=1
GROUP BY creatDt
) X1
LEFT OUTER JOIN
(
SELECT SUBSTR(STAT_DATE, 1,4) creatDt, SUM(CLICK_A_CNT) AS CLICK_A_CNT
from mj_banner_click_stat
WHERE 1=1
<![CDATA[ AND SUBSTR(STAT_DATE, 1,4) = #searchYear# ]]>
<![CDATA[ AND BANNER_CODE = #bannerCode# ]]>
<![CDATA[ AND MENU_CODE = #menuCode# ]]>
GROUP BY SUBSTR(STAT_DATE, 1,4)
) X2
ON X1.creatDt = X2.creatDt
ORDER BY X1.creatDt desc
<![CDATA[
AND DATE_FORMAT(A.CREAT_DT, '%Y') = #searchYear#
]]>
GROUP BY DATE_FORMAT(A.CREAT_DT, '%Y')
LIMIT #recordCountPerPage# OFFSET #firstIndex#
) M
) M2
ORDER BY M2.statDate DESC
</select>