فهرست منبع

유입통계 쿼리 수정

eskim 5 سال پیش
والد
کامیت
d85dcee5c4
1فایلهای تغییر یافته به همراه48 افزوده شده و 66 حذف شده
  1. 48 66
      style24.batch/src/main/java/com/style24/persistence/mybatis/shop/TsbStatistics.xml

+ 48 - 66
style24.batch/src/main/java/com/style24/persistence/mybatis/shop/TsbStatistics.xml

@@ -5,8 +5,23 @@
 	<!-- 사이트 제휴코드 유입집계 -->
 	<insert id="createInflowDaily" parameterType="String">
 		/* TsbStatistics.createInflowDaily */
-		MERGE INTO TB_INFLOW_DAILY A
-		USING (
+		INSERT INTO TB_INFLOW_DAILY (
+		    INFLOW_YMD
+		  , SITE_CD
+		  , AF_LINK_CD
+		  , PC_INFLOW_TCNT
+		  , MOB_INFLOW_TCNT
+		  , AOS_INFLOW_TCNT
+		  , IOS_INFLOW_TCNT
+		  , PC_INFLOW_CNT
+		  , MOB_INFLOW_CNT
+		  , AOS_INFLOW_CNT
+		  , IOS_INFLOW_CNT
+		  , REG_NO
+		  , REG_DT
+		)
+		(
+		SELECT * FROM (
 		       SELECT INFLOW_YMD
 		            , SITE_CD
 		            , AF_LINK_CD
@@ -18,10 +33,10 @@
 		            , SUM(CASE WHEN FRONT_GB = 'M' AND APP_YN = 'N' THEN INFLOW_CNT ELSE 0 END)                    AS MOB_INFLOW_CNT
 		            , SUM(CASE WHEN FRONT_GB = 'M' AND APP_YN = 'Y' AND OS_TYPE = 'A' THEN INFLOW_CNT ELSE 0 END)  AS AOS_INFLOW_CNT
 		            , SUM(CASE WHEN FRONT_GB = 'M' AND APP_YN = 'Y' AND OS_TYPE = 'I' THEN INFLOW_CNT ELSE 0 END)  AS IOS_INFLOW_CNT
-		            , 'batch'                                                                                      AS REG_ID
-		            , SYSDATE                                                                                      AS REG_DT
+		            , 0                                                                                            AS REG_NO
+		            , NOW()                                                                                        AS REG_DT
 		       FROM   (
-		               SELECT TO_CHAR(INFLOW_DT,'YYYYMMDD') AS INFLOW_YMD
+		               SELECT DATE_FORMAT(INFLOW_DT,'%Y%m%d') AS INFLOW_YMD
 		                    , SITE_CD
 		                    , AF_LINK_CD
 		                    , FRONT_GB
@@ -30,68 +45,35 @@
 		                    , COUNT(DISTINCT JSESSION_ID)   AS INFLOW_TCNT
 		                    , COUNT(DISTINCT IP_ADDR)       AS INFLOW_CNT
 		               FROM   TB_INFLOW_HST
-		<where>
-			<if test="inflowDt == 'today'">
-		                      INFLOW_DT BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 0.99999 --당일자
-			</if>
-			<if test="inflowDt == 'yesterday'">
-		                      INFLOW_DT BETWEEN TRUNC(SYSDATE-1) AND TRUNC(SYSDATE-1) + 0.99999 --당일자
-			</if>
-		</where>
-		               GROUP  BY TO_CHAR(INFLOW_DT,'YYYYMMDD'), AF_LINK_CD, SITE_CD, FRONT_GB, APP_YN, OS_TYPE
-		              )
+		               WHERE 1 = 1
+		               <if test="inflowDt == 'today'">
+		               AND   INFLOW_DT >= DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
+		               <![CDATA[
+		               AND   INFLOW_DT < DATE_FORMAT(DATE_ADD(DATE_FORMAT(NOW(), '%Y%m%d'), INTERVAL 1 DAY), '%Y%m%d%H%i%S')
+		               ]]>
+		               </if>
+		               <if test="inflowDt == 'yesterday'">
+		               AND   INFLOW_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y%m%d'), '%Y%m%d%H%i%S')
+		               <![CDATA[
+		               AND   INFLOW_DT < DATE_FORMAT(DATE_ADD(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y%m%d'), INTERVAL 1 DAY), '%Y%m%d%H%i%S')
+		               ]]>
+		               </if>
+		               GROUP  BY DATE_FORMAT(INFLOW_DT,'%Y%m%d'), AF_LINK_CD, SITE_CD, FRONT_GB, APP_YN, OS_TYPE
+		              ) Z
 		       GROUP  BY INFLOW_YMD, AF_LINK_CD, SITE_CD
-		      ) B
-		ON    (
-		       A.INFLOW_YMD = B.INFLOW_YMD
-		       AND
-		       A.SITE_CD = B.SITE_CD
-		       AND
-		       A.AF_LINK_CD = B.AF_LINK_CD
-		      )
-		WHEN MATCHED THEN
-		    UPDATE
-		    SET    A.PC_INFLOW_TCNT  = B.PC_INFLOW_TCNT
-		         , A.MOB_INFLOW_TCNT = B.MOB_INFLOW_TCNT
-		         , A.AOS_INFLOW_TCNT = B.AOS_INFLOW_TCNT
-		         , A.IOS_INFLOW_TCNT = B.IOS_INFLOW_TCNT
-		         , A.PC_INFLOW_CNT   = B.PC_INFLOW_CNT
-		         , A.MOB_INFLOW_CNT  = B.MOB_INFLOW_CNT
-		         , A.AOS_INFLOW_CNT  = B.AOS_INFLOW_CNT
-		         , A.IOS_INFLOW_CNT  = B.IOS_INFLOW_CNT
-		         , REG_ID            = B.REG_ID
-		         , REG_DT            = B.REG_DT
-		WHEN NOT MATCHED THEN
-		    INSERT (
-		           INFLOW_YMD
-		         , SITE_CD
-		         , AF_LINK_CD
-		         , PC_INFLOW_TCNT
-		         , MOB_INFLOW_TCNT
-		         , AOS_INFLOW_TCNT
-		         , IOS_INFLOW_TCNT
-		         , PC_INFLOW_CNT
-		         , MOB_INFLOW_CNT
-		         , AOS_INFLOW_CNT
-		         , IOS_INFLOW_CNT
-		         , REG_ID
-		         , REG_DT
-		    )
-		    VALUES (
-		           B.INFLOW_YMD
-		         , B.SITE_CD
-		         , B.AF_LINK_CD
-		         , B.PC_INFLOW_TCNT
-		         , B.MOB_INFLOW_TCNT
-		         , B.AOS_INFLOW_TCNT
-		         , B.IOS_INFLOW_TCNT
-		         , B.PC_INFLOW_CNT
-		         , B.MOB_INFLOW_CNT
-		         , B.AOS_INFLOW_CNT
-		         , B.IOS_INFLOW_CNT
-		         , B.REG_ID
-		         , B.REG_DT
-		    )
+		      ) B 
+		)
+		ON DUPLICATE KEY UPDATE
+		   PC_INFLOW_TCNT  = B.PC_INFLOW_TCNT
+		 , MOB_INFLOW_TCNT = B.MOB_INFLOW_TCNT
+		 , AOS_INFLOW_TCNT = B.AOS_INFLOW_TCNT
+		 , IOS_INFLOW_TCNT = B.IOS_INFLOW_TCNT
+		 , PC_INFLOW_CNT   = B.PC_INFLOW_CNT
+		 , MOB_INFLOW_CNT  = B.MOB_INFLOW_CNT
+		 , AOS_INFLOW_CNT  = B.AOS_INFLOW_CNT
+		 , IOS_INFLOW_CNT  = B.IOS_INFLOW_CNT
+		 , REG_NO          = B.REG_NO
+		 , REG_DT          = B.REG_DT
 	</insert>
 		
 </mapper>