<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<mapper namespace="i2c.biz.admin.stats.dao.UseStatsDAO">
 	
 	<parameterMap id="useStatsVO"  type="i2c.biz.admin.stats.vo.UseStatsVO" />
 	<resultMap 	  id="useStatsVO"  type="i2c.biz.admin.stats.vo.UseStatsVO" />

	<sql id="period_param">		
		<choose>
			<when test="period == 6">
	    		6
			</when>				
			<otherwise>
				8
			</otherwise>							
	 	</choose>
	</sql>
    
	<select id="selectCount"  parameterMap="useStatsVO" resultType="int">
	  /* [i2c.biz.admin.stats.dao.UseStatsDAO.selectCount] 사용자별 이용통계 count*/
		SELECT COUNT(0) AS TOTCNT
		FROM (
				SELECT 
				COUNT(USR_NM) OVER() TOTAL_CNT
				 , ROW_NUMBER() OVER(ORDER BY USR_NM ASC) RN
				 , USR_ID
				 , USR_NM
				 , MAX(FEED_CNT) AS FEED_CNT
				 , MAX(RECV_CNT) AS RECV_CNT
				 , MAX(CFRC_CNT) AS CFRC_CNT
				 , MAX(SPORT_CNT) AS SPORT_CNT
			FROM(
				SELECT
					USR.USR_ID
					, USR.USR_NM
					, COUNT(POST.CRT_USR_ID) AS FEED_CNT
					, 0 AS RECV_CNT
					, 0 AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_POST POST, SNS_USER USR
				WHERE POST.CRT_USR_ID = USR.USR_ID
				AND POST.TAR_OBJ_TP IN ('USER','GROUP')
				AND POST.POST_TP IN ('FEED','POLL')
				<![CDATA[
				AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
				]]>
				<include refid="searchUser"/>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION

				SELECT
					USR.USR_ID
					, USR.USR_NM
					, 0 AS FEED_CNT
					, COUNT(POST.CRT_USR_ID) AS RECV_CNT
					, 0 AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_POST POST, SNS_USER USR
				WHERE POST.CRT_USR_ID = USR.USR_ID
				AND POST.UP_POST_ID IN (
					SELECT POST_ID FROM SNS_POST
					WHERE TAR_OBJ_TP IN ('USER','GROUP')
					AND POST_TP IN ('FEED','POLL')
				)
				<![CDATA[
				AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
				]]>
				<include refid="searchUser"/>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION

				SELECT
					USR.USR_ID
					, USR.USR_NM
					, 0 AS FEED_CNT
					, 0 AS RECV_CNT
					, COUNT(CON.CRT_USR_ID) AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_CONFERENCE CON, SNS_USER USR
				WHERE CON.CRT_USR_ID = USR.USR_ID
				<![CDATA[
				AND SUBSTR(CON.CFRC_DT,0,8) >= #{start_dttm}
				AND SUBSTR(CON.CFRC_DT,0,8) <= #{end_dttm}
				]]>
				<include refid="searchUser"/>
				GROUP BY USR.USR_ID, USR.USR_NM
			)
			GROUP BY USR_ID, USR_NM
			)
	</select>
	
	
   <select id="listAdminUseUserStats"  parameterMap="useStatsVO"  resultMap="useStatsVO">
        /* [i2c.biz.admin.stats.dao.UseStatsDAO.listAdminUseUserStats] 사용별 이용통계 리스트*/
		SELECT
			*
		FROM
		(
			SELECT
				ROWNUM RNUM, TOTAL_CNT, RN, USR_ID, USR_NM, FEED_CNT, RECV_CNT, CFRC_CNT, SPORT_CNT
			FROM
			(
				SELECT 
					COUNT(USR_NM) OVER() TOTAL_CNT
					 , ROW_NUMBER() OVER(ORDER BY USR_NM ASC) RN
					 , USR_ID
					 , USR_NM
					 , MAX(FEED_CNT) AS FEED_CNT
					 , MAX(RECV_CNT) AS RECV_CNT
					 , MAX(CFRC_CNT) AS CFRC_CNT
					 , MAX(SPORT_CNT) AS SPORT_CNT
				FROM(
					SELECT
						USR.USR_ID
						, USR.USR_NM
						, COUNT(POST.CRT_USR_ID) AS FEED_CNT
						, 0 AS RECV_CNT
						, 0 AS CFRC_CNT
						, 0 AS SPORT_CNT
					FROM SNS_POST POST, SNS_USER USR
					WHERE POST.CRT_USR_ID = USR.USR_ID
					AND POST.TAR_OBJ_TP IN ('USER','GROUP')
					AND POST.POST_TP IN ('FEED','POLL')
					<![CDATA[
					AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
					AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
					]]>
					<include refid="searchUser"/>
					GROUP BY USR.USR_ID, USR.USR_NM
	
					UNION
	
					SELECT
						USR.USR_ID
						, USR.USR_NM
						, 0 AS FEED_CNT
						, COUNT(POST.CRT_USR_ID) AS RECV_CNT
						, 0 AS CFRC_CNT
						, 0 AS SPORT_CNT
					FROM SNS_POST POST, SNS_USER USR
					WHERE POST.CRT_USR_ID = USR.USR_ID
					AND POST.UP_POST_ID IN (
						SELECT POST_ID FROM SNS_POST
						WHERE TAR_OBJ_TP IN ('USER','GROUP')
						AND POST_TP IN ('FEED','POLL')
					)
					<![CDATA[
					AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
					AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
					]]>
					<include refid="searchUser"/>
					GROUP BY USR.USR_ID, USR.USR_NM
	
	
					UNION
	
					SELECT
						USR.USR_ID
						, USR.USR_NM
						, 0 AS FEED_CNT
						, 0 AS RECV_CNT
						, COUNT(CON.CRT_USR_ID) AS CFRC_CNT
						, 0 AS SPORT_CNT
					FROM SNS_CONFERENCE CON, SNS_USER USR
					WHERE CON.CRT_USR_ID = USR.USR_ID
					<![CDATA[
					AND SUBSTR(CON.CFRC_DT,0,8) >= #{start_dttm}
					AND SUBSTR(CON.CFRC_DT,0,8) <= #{end_dttm}
					]]>
					<include refid="searchUser"/>
					GROUP BY USR.USR_ID, USR.USR_NM
				)
				GROUP BY USR_ID, USR_NM
			)
		)
	 <![CDATA[
		 WHERE RNUM  > #{firstIndex}
	     AND   RNUM <= #{firstIndex} + #{recordCountPerPage}
		 ORDER BY RNUM 
	   ]]> 
	</select>
	
	<select id="listAdminUseUserStatsTotal"  parameterMap="useStatsVO"  resultMap="useStatsVO">
		/* [i2c.biz.admin.stats.dao.UseStatsDAO.listAdminUseUserStatsTotal] 사용별 이용통계 total*/
		  
		  SELECT   SUM(FEED_CNT) AS FEED_CNT
				 , SUM(RECV_CNT) AS RECV_CNT
				 , SUM(CFRC_CNT) AS CFRC_CNT
				 , SUM(SPORT_CNT) AS SPORT_CNT
			FROM(
			   /* 소통 커뮤니티 */
				SELECT USR.USR_ID
					, USR.USR_NM
					, COUNT(POST.CRT_USR_ID) AS FEED_CNT
					, 0 AS RECV_CNT
					, 0 AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_POST POST, SNS_USER USR
				WHERE POST.CRT_USR_ID = USR.USR_ID
				AND POST.TAR_OBJ_TP IN ('USER','GROUP')
				AND POST.POST_TP IN ('FEED','POLL')
				<![CDATA[
				AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
				]]>
				<include refid="searchUser"/>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION
				/* 소통커뮤니티 - 댓글 */
				SELECT USR.USR_ID
					, USR.USR_NM
					, 0 AS FEED_CNT
					, COUNT(POST.CRT_USR_ID) AS RECV_CNT
					, 0 AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_POST POST, SNS_USER USR
				WHERE POST.CRT_USR_ID = USR.USR_ID
				AND POST.UP_POST_ID IN (
					SELECT POST_ID FROM SNS_POST
					WHERE TAR_OBJ_TP IN ('USER','GROUP')
					AND POST_TP IN ('FEED','POLL')
				)
				<![CDATA[
				AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
				]]>
				<include refid="searchUser"/>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION
				/* 회의 */
				SELECT USR.USR_ID
					, USR.USR_NM
					, 0 AS FEED_CNT
					, 0 AS RECV_CNT
					, COUNT(CON.CRT_USR_ID) AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_CONFERENCE CON, SNS_USER USR
				WHERE CON.CRT_USR_ID = USR.USR_ID
				<![CDATA[
				AND SUBSTR(CON.CFRC_DT,0,8) >= #{start_dttm}
				AND SUBSTR(CON.CFRC_DT,0,8) <= #{end_dttm}
				]]>
				<include refid="searchUser"/>
				GROUP BY USR.USR_ID, USR.USR_NM
			)
	</select>
	
	
	<select id="selectDailyCount"  parameterMap="useStatsVO" resultType="int">
	 /* [i2c.biz.admin.stats.dao.UseStatsDAO.selectDailyCount] 일별 이용통계 count */
	 SELECT COUNT(0) AS TOTCNT
		FROM
		(
			SELECT
				 <if test="period == 6">
				 TO_CHAR(TO_DATE(DTTM,'YYYYMM'),'YYYY-MM') DTTM
				 </if>
				 <if test="period == 8">
				 TO_CHAR(TO_DATE(DTTM,'YYYYMMDD'),'YYYY-MM-DD') DTTM
				 </if>
			FROM (
			     /* 소통 커뮤니티 */
				SELECT 
					SUBSTR(REG_DTTM,0,<include refid="period_param"/>) AS DTTM
					, COUNT(SP.CRT_USR_ID) AS FEED_CNT
					, 0 AS RECV_CNT
					, 0 AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_POST SP, SNS_USER USR
				WHERE SP.CRT_USR_ID = USR.USR_ID  
				AND TAR_OBJ_TP IN ('USER','GROUP')
				AND POST_TP IN ('FEED','POLL')
				
				AND SUBSTR(REG_DTTM,0,#{period}) <![CDATA[>=]]> #{start_dttm}
				AND SUBSTR(REG_DTTM,0,#{period}) <![CDATA[<=]]> #{end_dttm}
				
				<include refid="searchUser"/>
				GROUP BY SUBSTR(REG_DTTM,0,<include refid="period_param"/>)
	
				UNION
			    /* 소통 커뮤니티 -댓글 */
				SELECT
					SUBSTR(REG_DTTM,0,<include refid="period_param"/>) AS DTTM
					, 0 AS FEED_CNT
					, COUNT(SP.CRT_USR_ID) AS RECV_CNT
					, 0 AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_POST SP, SNS_USER USR
				WHERE SP.CRT_USR_ID = USR.USR_ID  
				AND UP_POST_ID IN (
					SELECT POST_ID FROM SNS_POST
					WHERE TAR_OBJ_TP IN ('USER','GROUP')
					AND POST_TP IN ('FEED','POLL')
				)
				
				AND SUBSTR(REG_DTTM,0,#{period}) <![CDATA[>=]]> #{start_dttm}
				AND SUBSTR(REG_DTTM,0,#{period}) <![CDATA[<=]]> #{end_dttm}
				
				<include refid="searchUser"/>
				GROUP BY SUBSTR(REG_DTTM,0,<include refid="period_param"/>)
	
				UNION
				/* 회의 */
				SELECT
					SUBSTR(CFRC_DT,0,<include refid="period_param"/>) AS DTTM
					, 0 AS FEED_CNT
					, 0 AS RECV_CNT
					, COUNT(SC.CRT_USR_ID) AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_CONFERENCE SC, SNS_USER USR
				WHERE SC.CRT_USR_ID = USR.USR_ID
				
				AND SUBSTR(CFRC_DT,0,#{period}) <![CDATA[>=]]> #{start_dttm}
				AND SUBSTR(CFRC_DT,0,#{period}) <![CDATA[<=]]> #{end_dttm}
				
				<include refid="searchUser"/>
				GROUP BY SUBSTR(CFRC_DT,0,<include refid="period_param"/>)
			)
			GROUP BY DTTM
		)
		
	</select>
	
	
	 <select id="listDailyStats"  parameterMap="useStatsVO"  resultMap="useStatsVO">
	 /* [i2c.biz.admin.stats.dao.UseStatsDAO.listDailyStats] 일별 이용통계 */
		SELECT
			*
		FROM 
		(
			SELECT
				ROWNUM RNUM, TOTAL_CNT, RN, DTTM, FEED_CNT, RECV_CNT, CFRC_CNT, SPORT_CNT
			FROM
			(
				SELECT
					 COUNT(DTTM) OVER() TOTAL_CNT
					 , ROW_NUMBER() OVER(ORDER BY DTTM DESC) RN
					 <if test="period == 6">
					 , TO_CHAR(TO_DATE(DTTM,'YYYYMM'),'YYYY-MM') DTTM
					 </if>
					 <if test="period == 8">
					 , TO_CHAR(TO_DATE(DTTM,'YYYYMMDD'),'YYYY-MM-DD') DTTM
					 </if>
					 , MAX(FEED_CNT) AS FEED_CNT
					 , MAX(RECV_CNT) AS RECV_CNT
					 , MAX(CFRC_CNT) AS CFRC_CNT
					 , MAX(SPORT_CNT) AS SPORT_CNT
				FROM (
				     /* 소통 커뮤니티 */
					SELECT 
						SUBSTR(REG_DTTM,0,<include refid="period_param"/>) AS DTTM
						, COUNT(SP.CRT_USR_ID) AS FEED_CNT
						, 0 AS RECV_CNT
						, 0 AS CFRC_CNT
						, 0 AS SPORT_CNT
					FROM SNS_POST SP, SNS_USER USR
					WHERE SP.CRT_USR_ID = USR.USR_ID  
					AND TAR_OBJ_TP IN ('USER','GROUP')
					AND POST_TP IN ('FEED','POLL')
					
					AND SUBSTR(REG_DTTM,0,#{period}) <![CDATA[>=]]> #{start_dttm}
					AND SUBSTR(REG_DTTM,0,#{period}) <![CDATA[<=]]> #{end_dttm}
					
					<include refid="searchUser"/>
					GROUP BY SUBSTR(REG_DTTM,0,<include refid="period_param"/>)
		
					UNION
				    /* 소통 커뮤니티 -댓글 */
					SELECT
						SUBSTR(REG_DTTM,0,<include refid="period_param"/>) AS DTTM
						, 0 AS FEED_CNT
						, COUNT(SP.CRT_USR_ID) AS RECV_CNT
						, 0 AS CFRC_CNT
						, 0 AS SPORT_CNT
					FROM SNS_POST SP, SNS_USER USR
					WHERE SP.CRT_USR_ID = USR.USR_ID  
					AND UP_POST_ID IN (
						SELECT POST_ID FROM SNS_POST
						WHERE TAR_OBJ_TP IN ('USER','GROUP')
						AND POST_TP IN ('FEED','POLL')
					)
					
					AND SUBSTR(REG_DTTM,0,#{period}) <![CDATA[>=]]> #{start_dttm}
					AND SUBSTR(REG_DTTM,0,#{period}) <![CDATA[<=]]> #{end_dttm}
					
					<include refid="searchUser"/>
					GROUP BY SUBSTR(REG_DTTM,0,<include refid="period_param"/>)
		
					UNION
					/* 회의 */
					SELECT
						SUBSTR(CFRC_DT,0,<include refid="period_param"/>) AS DTTM
						, 0 AS FEED_CNT
						, 0 AS RECV_CNT
						, COUNT(SC.CRT_USR_ID) AS CFRC_CNT
						, 0 AS SPORT_CNT
					FROM SNS_CONFERENCE SC, SNS_USER USR
					WHERE SC.CRT_USR_ID = USR.USR_ID
					
					AND SUBSTR(CFRC_DT,0,#{period}) <![CDATA[>=]]> #{start_dttm}
					AND SUBSTR(CFRC_DT,0,#{period}) <![CDATA[<=]]> #{end_dttm}
					
					<include refid="searchUser"/>
					GROUP BY SUBSTR(CFRC_DT,0,<include refid="period_param"/>)
				)
				GROUP BY DTTM
			)
		)
		 <![CDATA[
			 WHERE RNUM  > #{firstIndex}
		     AND   RNUM <= #{firstIndex} + #{recordCountPerPage}
			 ORDER BY RNUM 
	   ]]> 
	 </select>
	
	
	 <select id="listDailyStatsTotal"  parameterMap="useStatsVO"  resultMap="useStatsVO">
	 /* [i2c.biz.admin.stats.dao.UseStatsDAO.listDailyStatsTotal] 일별 이용통계 total */
		SELECT  SUM(FEED_CNT) AS FEED_CNT
			  , SUM(RECV_CNT) AS RECV_CNT
			  , SUM(CFRC_CNT) AS CFRC_CNT
			  , SUM(SPORT_CNT) AS SPORT_CNT
		FROM (
		    /* 소통 커뮤니티 */
				SELECT 
					SUBSTR(REG_DTTM,0,<include refid="period_param"/>) AS DTTM
					, COUNT(SP.CRT_USR_ID) AS FEED_CNT
					, 0 AS RECV_CNT
					, 0 AS CFRC_CNT
					, 0 AS SPORT_CNT
				FROM SNS_POST SP, SNS_USER USR
				WHERE SP.CRT_USR_ID = USR.USR_ID  
				AND TAR_OBJ_TP IN ('USER','GROUP')
				AND POST_TP IN ('FEED','POLL')
				
				AND SUBSTR(SP.REG_DTTM,0,#{period}) <![CDATA[>=]]> #{start_dttm}
				AND SUBSTR(SP.REG_DTTM,0,#{period}) <![CDATA[<=]]> #{end_dttm}
				
				<include refid="searchUser"/>
				GROUP BY SUBSTR(SP.REG_DTTM,0,<include refid="period_param"/>)
			UNION
	        /* 소통 커뮤니티 - 댓글 */
			SELECT
				SUBSTR(REG_DTTM,0,<include refid="period_param"/>) AS DTTM
				, 0 AS FEED_CNT
				, COUNT(SP.CRT_USR_ID) AS RECV_CNT
				, 0 AS CFRC_CNT
				, 0 AS SPORT_CNT
			FROM SNS_POST SP, SNS_USER USR
			WHERE SP.CRT_USR_ID = USR.USR_ID  
			AND UP_POST_ID IN (
				SELECT POST_ID FROM SNS_POST
				WHERE TAR_OBJ_TP IN ('USER','GROUP')
				AND POST_TP IN ('FEED','POLL')
			)
			
			AND SUBSTR(SP.REG_DTTM,0,#{period}) <![CDATA[>=]]> #{start_dttm}
			AND SUBSTR(SP.REG_DTTM,0,#{period}) <![CDATA[<=]]> #{end_dttm}
			
			<include refid="searchUser"/>
			GROUP BY SUBSTR(SP.REG_DTTM,0,<include refid="period_param"/>)
	
			UNION
	
			/*회의 */
			SELECT
				SUBSTR(CFRC_DT,0,<include refid="period_param"/>) AS DTTM
				, 0 AS FEED_CNT
				, 0 AS RECV_CNT
				, COUNT(SC.CRT_USR_ID) AS CFRC_CNT
				, 0 AS SPORT_CNT
			FROM SNS_CONFERENCE SC, SNS_USER USR
			WHERE SC.CRT_USR_ID = USR.USR_ID
			
			AND SUBSTR(SC.CFRC_DT,0,#{period}) <![CDATA[>=]]> #{start_dttm}
			AND SUBSTR(SC.CFRC_DT,0,#{period}) <![CDATA[<=]]> #{end_dttm}
			
			<include refid="searchUser"/>
			GROUP BY SUBSTR(SC.CFRC_DT,0,<include refid="period_param"/>)
		)
	 </select>
	 
	<select id="selectLinkCount"  parameterMap="useStatsVO" resultType="int">
	  /* [i2c.biz.admin.stats.dao.UseStatsDAO.selectLinkCount] 접속통계 count*/
		SELECT COUNT(0) AS TOTCNT
		FROM
		(
			select 
				  ROWNUM RNUM,
		          ROW_NUMBER() OVER(ORDER BY conn.CONN_DTTM DESC) RN,
		          COUNT(conn.CONN_DTTM) OVER() TOTAL_CNT,
		          nvl(conn.p_conn,0) as p_conn,
		          nvl(conn.m_conn,0) as m_conn, 
		          nvl(conn.total_conn,0) as total_conn, 
		          nvl(usr.usr_conn,0) as usr_conn, 
		          TO_CHAR(TO_DATE(conn.CONN_DTTM,'YYYYMMDD'),'YYYY-MM-DD') DTTM
			from 
				(
					select
						conn_dttm,
					    max(p_conn) as p_conn, 
					   	max(m_conn) as m_conn,
					   	max(p_conn)+max(m_conn) as total_conn
					from
					(
						 select
					        SUBSTR(his.CONN_DTTM,0,8) conn_dttm,
					        nvl(decode(his.device_type,'WEB',count(*)), 0) p_conn,
					        nvl(decode(his.device_type,'APP',count(*)), 0) m_conn
					      from SNS_LOGIN_HISTORY his, sns_user usr
					      where
					      his.usr_id = usr.usr_id
					      AND his.SUCCESS_YN = 'Y'
					      <![CDATA[
							and SUBSTR(his.CONN_DTTM,0,8) >=  #{start_dttm}
							AND SUBSTR(his.CONN_DTTM,0,8) <=  #{end_dttm}
						  ]]>
						  <include refid="searchUser"/>
					      group by SUBSTR(his.CONN_DTTM,0,8), his.device_type
					)
					group by conn_dttm
				) conn,			
				(
					select
				      conn_dttm, 
				      count(*) as usr_conn
				    from 
				    (
				      select
				        SUBSTR(his.CONN_DTTM,0,8) conn_dttm, 
				        his.usr_id
				      from 
				        SNS_LOGIN_HISTORY his, sns_user usr
				      where
				        his.usr_id = usr.usr_id
				        AND his.SUCCESS_YN = 'Y'
				        <![CDATA[
							and SUBSTR(his.CONN_DTTM,0,8) >=  #{start_dttm}
							AND SUBSTR(his.CONN_DTTM,0,8) <=  #{end_dttm}
						]]>
						<include refid="searchUser"/>
				      group by SUBSTR(his.CONN_DTTM,0,8), his.usr_id
				    )
				    group by conn_dttm
				) usr
			where conn.conn_dttm = usr.conn_dttm
		)
	</select>
	
	
   <select id="listLinkStats"  parameterMap="useStatsVO"  resultMap="useStatsVO">
        /* [i2c.biz.admin.stats.dao.UseStatsDAO.listLinkStats] 접속통계 리스트*/
		SELECT
			*
		FROM
		(
			select 
				  ROWNUM RNUM,
		          ROW_NUMBER() OVER(ORDER BY conn.CONN_DTTM DESC) RN,
		          COUNT(conn.CONN_DTTM) OVER() TOTAL_CNT,
		          nvl(conn.p_conn,0) as p_conn,
		          nvl(conn.m_conn,0) as m_conn, 
		          nvl(conn.total_conn,0) as total_conn, 
		          nvl(usr.usr_conn,0) as usr_conn, 
		          TO_CHAR(TO_DATE(conn.CONN_DTTM,'YYYYMMDD'),'YYYY-MM-DD') DTTM
			from 
				(
					select
						conn_dttm,
					    max(p_conn) as p_conn, 
					   	max(m_conn) as m_conn,
					   	max(p_conn)+max(m_conn) as total_conn
					from
					(
						 select
					        SUBSTR(his.CONN_DTTM,0,8) conn_dttm,
					        nvl(decode(his.device_type,'WEB',count(*)), 0) p_conn,
					        nvl(decode(his.device_type,'APP',count(*)), 0) m_conn
					      from SNS_LOGIN_HISTORY his, sns_user usr
					      where
					      his.usr_id = usr.usr_id
					      AND his.SUCCESS_YN = 'Y'
					      <![CDATA[
							and SUBSTR(his.CONN_DTTM,0,8) >=  #{start_dttm}
							AND SUBSTR(his.CONN_DTTM,0,8) <=  #{end_dttm}
						  ]]>
						  <include refid="searchUser"/>
					      group by SUBSTR(his.CONN_DTTM,0,8), his.device_type
					)
					group by conn_dttm
				) conn,			
				(
					select
				      conn_dttm, 
				      count(*) as usr_conn
				    from 
				    (
				      select
				        SUBSTR(his.CONN_DTTM,0,8) conn_dttm, 
				        his.usr_id
				      from 
				        SNS_LOGIN_HISTORY his, sns_user usr
				      where
				        his.usr_id = usr.usr_id
				        AND his.SUCCESS_YN = 'Y'
				        <![CDATA[
							AND SUBSTR(his.CONN_DTTM,0,8) >=  #{start_dttm}
							AND SUBSTR(his.CONN_DTTM,0,8) <=  #{end_dttm}
						]]>
						<include refid="searchUser"/>
				      group by SUBSTR(his.CONN_DTTM,0,8), his.usr_id
				    )
				    group by conn_dttm
				) usr
			where conn.conn_dttm = usr.conn_dttm
		)
	 <![CDATA[
		 WHERE RN  > #{firstIndex}
	     AND   RN <= #{firstIndex} + #{recordCountPerPage}
		 ORDER BY RN 
	   ]]>
	</select>
	
	<select id="listLinkStatsTotal"  parameterMap="useStatsVO"  resultMap="useStatsVO">
		/* [i2c.biz.admin.stats.dao.UseStatsDAO.listLinkStatsTotal] 접속통계 total*/
		select
			SUM(conn.p_conn) t_p_conn, 
			SUM(conn.m_conn) t_m_conn, 
			SUM(conn.total_conn) t_total_conn, 
			SUM(usr.usr_conn) t_usr_conn
		from (
			select
				max(p_conn) as p_conn, max(m_conn) as m_conn,
				max(p_conn)+max(m_conn) as total_conn,
				conn_dttm
			from
			(
				select
					nvl(decode(client_tp_cd,'WEB',count(*)), 0) p_conn,
					nvl(decode(client_tp_cd,'AND',count(*)), 0) m_conn,
					conn_dttm
				from (
				select
					his.access_token, 
					his.conn_dttm, 
					client.client_tp_cd
				from
				(select
					his.access_token, 
					SUBSTR(his.req_DTTM,0,8) conn_dttm, 
					token.client_id
				from sns_request_history his, sns_access_token token, sns_user usr
				where his.access_token = token.access_token
				and token.usr_id = usr.usr_id
				<![CDATA[
				and SUBSTR(his.req_DTTM,0,8) >=  #{start_dttm}
				AND SUBSTR(his.req_DTTM,0,8) <=  #{end_dttm}
				]]>
				<include refid="searchUser"/>
				group by SUBSTR(his.req_DTTM,0,8), his.access_token, token.client_id ) his, sns_client client
				where his.client_id = client.client_id
				) group by conn_dttm, client_tp_cd
			)
			group by conn_dttm
		) conn, 
		(
			select
				conn_dttm, 
				count(*) as usr_conn
			from (
				select
					SUBSTR(his.req_DTTM,0,8) conn_dttm, token.usr_id
				from sns_request_history his, sns_access_token token, sns_user usr
				where his.access_token = token.access_token
				and token.usr_id = usr.usr_id
				<![CDATA[
				and SUBSTR(req_DTTM,0,8) >=  #{start_dttm}
				AND SUBSTR(req_DTTM,0,8) <=  #{end_dttm}
				]]>
				<include refid="searchUser"/>
				group by SUBSTR(his.req_DTTM,0,8), token.usr_id
			)group by conn_dttm
		) usr		
		where conn.conn_dttm = usr.conn_dttm  
	</select>
	
	
	<select id="selectGroupCount"  parameterMap="useStatsVO" resultType="int">
	  /* [i2c.biz.admin.stats.dao.UseStatsDAO.selectGroupCount] 그룹별 이용통계 count*/
		SELECT COUNT(0) AS TOTCNT
		FROM
		(
			select
				COUNT(grp_id) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY max(feed_cnt)+max(recv_cnt)+max(join_cnt)+max(file_cnt) DESC) RN,
				grp_id, fn_get_grp_nm(grp_id) grp_nm,
				max(feed_cnt) as feed_cnt,
				max(recv_cnt) as recv_cnt,
				max(join_cnt) as join_cnt,
				max(file_cnt) as file_cnt
			from (
				select
					count(*) as feed_cnt,
					0 as recv_cnt,
					0 as join_cnt,
					0 as file_cnt,
					tar_grp_id as grp_id
				from sns_post post
				where post.tar_obj_tp = 'GROUP'
				and tar_grp_id is not null
				and post.post_tp IN ('FEED','POLL')
				<![CDATA[
				and substr(post.reg_dttm,0,8) >= #{start_dttm}
				and substr(post.reg_dttm,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) LIKE '%' || #{grp_nm} || '%'
				</if>
				group by tar_grp_id

				union

				select
					0 as feed_cnt,
					count(*) as recv_cnt,
					0 as join_cnt,
					0 as file_cnt,
					tar_grp_id as grp_id
				from sns_post post
				where post.up_post_id IN (
					select post_id from sns_post
					where tar_obj_tp = 'GROUP'
					and post_tp IN ('FEED','POLL'))
				and tar_grp_id is not null
				<![CDATA[
				and substr(post.reg_dttm,0,8) >= #{start_dttm}
				and substr(post.reg_dttm,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) LIKE '%' || #{grp_nm} || '%'
				</if>
				group by tar_grp_id

				union

				select
					0 as feed_cnt,
					0 as recv_cnt,
					count(*) as join_cnt,
					0 as file_cnt,
					grp.grp_id as grp_id
				from sns_group grp, sns_users_by_group by_grp
				where grp.grp_id = by_grp.grp_id
				and by_grp.leave_dttm is null
				<![CDATA[
				and substr(by_grp.join_dttm,0,8) >= #{start_dttm}
				and substr(by_grp.join_dttm,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(grp.grp_id) LIKE '%' || #{grp_nm} || '%'
				</if>
				group by grp.grp_id

				union

				select
					0 as feed_cnt,
					0 as recv_cnt,
					0 as join_cnt,
					count(*) as file_cnt,
					post.tar_grp_id as grp_id
				from sns_attach att, sns_post post
				where att.post_id = post.post_id
				and post.tar_obj_tp = 'GROUP'
				and post.post_tp in ('FEED','POLL')
				and post.tar_grp_id is not null
				<![CDATA[
				and substr(att.crt_dttm,0,8) >= #{start_dttm}
				and substr(att.crt_dttm,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) LIKE '%' || #{grp_nm} || '%'
				</if>
				group by post.tar_grp_id
			) group by grp_id
		)
	</select>
	
	
   <select id="listGroupStats"  parameterMap="useStatsVO"  resultMap="useStatsVO">
        /* [i2c.biz.admin.stats.dao.UseStatsDAO.listGroupStats] 그룹별 이용통계 리스트*/
        SELECT 
		    * 
	    FROM (
		 	SELECT
		 		ROWNUM RNUM,TOTAL_CNT,RN,grp_id,grp_nm,feed_cnt,recv_cnt,join_cnt,file_cnt
			FROM
			(
				select
					COUNT(grp_id) OVER() TOTAL_CNT,
					ROW_NUMBER() OVER(ORDER BY max(feed_cnt)+max(recv_cnt)+max(join_cnt)+max(file_cnt) DESC) RN,
					grp_id,
					DECODE(grp_id,'전체공개','전체공개',fn_get_grp_nm(grp_id) ) grp_nm,
					max(feed_cnt) as feed_cnt,
					max(recv_cnt) as recv_cnt,
					max(join_cnt) as join_cnt,
					max(file_cnt) as file_cnt
				from (
					select
						count(*) as feed_cnt,
						0 as recv_cnt,
						0 as join_cnt,
						0 as file_cnt,
						tar_grp_id as grp_id
					from sns_post post
					where post.tar_obj_tp = 'GROUP'
					and tar_grp_id is not null
					and post.post_tp IN ('FEED','POLL')
					<![CDATA[
					and substr(post.reg_dttm,0,8) >= #{start_dttm}
					and substr(post.reg_dttm,0,8) <= #{end_dttm}
					]]>
					<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
					and fn_get_grp_nm(post.tar_grp_id) LIKE '%' || #{grp_nm} || '%'
					</if>
					group by tar_grp_id
	
					union
	
					select
						0 as feed_cnt,
						count(*) as recv_cnt,
						0 as join_cnt,
						0 as file_cnt,
						tar_grp_id as grp_id
					from sns_post post
					where post.up_post_id IN (
						select post_id from sns_post
						where tar_obj_tp = 'GROUP'
						and post_tp IN ('FEED','POLL'))
					and tar_grp_id is not null
					<![CDATA[
					and substr(post.reg_dttm,0,8) >= #{start_dttm}
					and substr(post.reg_dttm,0,8) <= #{end_dttm}
					]]>
					<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
					and fn_get_grp_nm(post.tar_grp_id) LIKE '%' || #{grp_nm} || '%'
					</if>
					group by tar_grp_id
	
					union
	
					select
						0 as feed_cnt,
						0 as recv_cnt,
						count(*) as join_cnt,
						0 as file_cnt,
						grp.grp_id as grp_id
					from sns_group grp, sns_users_by_group by_grp
					where grp.grp_id = by_grp.grp_id
					and by_grp.leave_dttm is null
					<![CDATA[
					and substr(by_grp.join_dttm,0,8) >= #{start_dttm}
					and substr(by_grp.join_dttm,0,8) <= #{end_dttm}
					]]>
					<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
					and fn_get_grp_nm(grp.grp_id) LIKE '%' || #{grp_nm} || '%'
					</if>
					group by grp.grp_id
	
					union
	
					select
						0 as feed_cnt,
						0 as recv_cnt,
						0 as join_cnt,
						count(*) as file_cnt,
						post.tar_grp_id as grp_id
					from sns_attach att, sns_post post
					where att.post_id = post.post_id
					and post.tar_obj_tp = 'GROUP'
					and post.post_tp in ('FEED','POLL')
					and post.tar_grp_id is not null
					<![CDATA[
					and substr(att.crt_dttm,0,8) >= #{start_dttm}
					and substr(att.crt_dttm,0,8) <= #{end_dttm}
					]]>
					<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
					and fn_get_grp_nm(post.tar_grp_id) LIKE '%' || #{grp_nm} || '%'
					</if>
					group by post.tar_grp_id
				) group by grp_id
			)
		)
	 <![CDATA[
		 WHERE RNUM  > #{firstIndex}
	     AND   RNUM <= #{firstIndex} + #{recordCountPerPage}
		 ORDER BY RNUM 
	   ]]> 
	</select>
	
	<select id="listGroupStatsTotal"  parameterMap="useStatsVO"  resultMap="useStatsVO">
		/* [i2c.biz.admin.stats.dao.UseStatsDAO.listGroupStatsTotal] 그룹별 이용통계 total*/
		select
			sum(feed_cnt) as t_feed_cnt,
			sum(recv_cnt) as t_recv_cnt,
			sum(join_cnt) as t_join_cnt,
			sum(file_cnt) as t_file_cnt
		from (
			select
				count(*) as feed_cnt,
				0 as recv_cnt,
				0 as join_cnt,
				0 as file_cnt,
				tar_grp_id as grp_id
			from sns_post post
			where post.tar_obj_tp = 'GROUP'
			and tar_grp_id is not null
			and post.post_tp IN ('FEED','POLL')
			<![CDATA[
			and substr(post.reg_dttm,0,8) >= #{start_dttm}
			and substr(post.reg_dttm,0,8) <= #{end_dttm}
			]]>
			<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) LIKE '%' || #{grp_nm} || '%'
			</if>
			group by tar_grp_id

			union

			select
				0 as feed_cnt,
				count(*) as recv_cnt,
				0 as join_cnt,
				0 as file_cnt,
				tar_grp_id as grp_id
			from sns_post post
			where post.up_post_id IN (
				select post_id from sns_post
				where tar_obj_tp = 'GROUP'
				and post_tp IN ('FEED','POLL'))
			and tar_grp_id is not null
			<![CDATA[
			and substr(post.reg_dttm,0,8) >= #{start_dttm}
			and substr(post.reg_dttm,0,8) <= #{end_dttm}
			]]>
			<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) LIKE '%' || #{grp_nm} || '%'
			</if>
			group by tar_grp_id

			union

			select
				0 as feed_cnt,
				0 as recv_cnt,
				count(*) as join_cnt,
				0 as file_cnt,
				grp.grp_id as grp_id
			from sns_group grp, sns_users_by_group by_grp
			where grp.grp_id = by_grp.grp_id
			and by_grp.leave_dttm is null
			<![CDATA[
			and substr(by_grp.join_dttm,0,8) >= #{start_dttm}
			and substr(by_grp.join_dttm,0,8) <= #{end_dttm}
			]]>
			<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(grp.grp_id) LIKE '%' || #{grp_nm} || '%'
			</if>
			group by grp.grp_id

			union

			select
				0 as feed_cnt,
				0 as recv_cnt,
				0 as join_cnt,
				count(*) as file_cnt,
				post.tar_grp_id as grp_id
			from sns_attach att, sns_post post
			where att.post_id = post.post_id
			and post.tar_obj_tp = 'GROUP'
			and post.post_tp in ('FEED','POLL')
			and post.tar_grp_id is not null
			<![CDATA[
			and substr(att.crt_dttm,0,8) >= #{start_dttm}
			and substr(att.crt_dttm,0,8) <= #{end_dttm}
			]]>
			<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) LIKE '%' || #{grp_nm} || '%'
			</if>
			group by post.tar_grp_id
		)  
	</select>
	
	<sql id="searchUser">
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
			AND USR.USR_NM LIKE '%' || #{usr_nm} || '%'
		</if>
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(searchType)">
			AND USR.AUTH_CODE IN 
			<foreach collection="searchType" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
		</if>
	</sql>	
	
	<select id="selectDept"  parameterMap="useStatsVO"  resultType="java.lang.String">
	/* [i2c.biz.admin.stats.dao.UseStatsDAO.selectDept] 기관조회*/
		SELECT  ED.dept_id 
		FROM sns_common_code SC, ext_department ED
		WHERE SC.srt_ord = ED.srt_ord
		AND SC.cd = #{searchType}
		AND ED.base_dept_cd = '1'
	
	</select>
</mapper>