배너클릭 성능개선

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