<?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.main.dao.AdminMainDAO">
 	
   <select id="listAdminConnLink" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.main.dao.AdminMainDAO.listAdminConnLink] 일별/월별 접속량 */
		SELECT
			*
		FROM
		(
			SELECT
				COUNT(conn_dttm) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY conn_dttm desc) RN,
				<if test="term == 6">
				to_char(TO_DATE(substr(conn_dttm,0,#{term}),'yyyymm'),'yyyy-mm') conn_dttm,
				</if>
				<if test="term == 8">
				to_char(TO_DATE(substr(conn_dttm,0,#{term}),'yyyymmdd'),'yyyy-mm-dd DY') conn_dttm,
				</if>
				COUNT(CONN_DTTM) conn_cnt
			FROM (
					SELECT 
						CONN_DTTM,ACCESS_TOKEN
					FROM
						(SELECT
							SUBSTR(REQ_DTTM,0,#{term}) CONN_DTTM, ACCESS_TOKEN
						FROM SNS_REQUEST_HISTORY
						where 1=1						
						AND SUBSTR(REQ_DTTM,0,#{term}) <![CDATA[<=]]> TO_CHAR(SYSDATE+1,'yyyymmdd')
						)
					GROUP BY CONN_DTTM, ACCESS_TOKEN
				 )
			GROUP BY CONN_DTTM
			ORDER BY CONN_DTTM DESC
		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>
	
	
		
	<select id="listAdminConnTotalLink" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.main.dao.AdminMainDAO.listAdminConnTotalLink] 일별/월별 total접속량 */
		SELECT
			nvl(SUM(conn_cnt),0) TOTAL_CNT
		FROM
		(
			SELECT
				COUNT(conn_dttm) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY conn_dttm desc) RN,
				<if test="term == 6">
				to_char(TO_DATE(substr(conn_dttm,0,#{term}),'yyyymm'),'yyyy-mm') conn_dttm,
				</if>
				<if test="term == 8">
				to_char(TO_DATE(substr(conn_dttm,0,#{term}),'yyyymmdd'),'yyyy-mm-dd DY') conn_dttm,
				</if>
				COUNT(CONN_DTTM) conn_cnt
			FROM (
					SELECT
						CONN_DTTM, ACCESS_TOKEN
					  FROM
						(SELECT
							SUBSTR(REQ_DTTM,0,#{term}) CONN_DTTM, ACCESS_TOKEN
						FROM SNS_REQUEST_HISTORY
						WHERE 1=1
						AND SUBSTR(REQ_DTTM,0,#{term}) <![CDATA[<=]]> TO_CHAR(SYSDATE+1,'yyyymmdd')
						)
					GROUP BY CONN_DTTM, ACCESS_TOKEN				
				  )
			GROUP BY CONN_DTTM
			ORDER BY CONN_DTTM DESC
		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>
	
	
	<select id="listAdminLink" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.main.AdminMainDAO.listAdminLink] 관리자 로그인 내역 */
		SELECT
			*
		FROM
		(
			select
				COUNT(*) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY his.conn_dttm desc) RN,
				TO_CHAR(TO_DATE(his.conn_dttm,'yyyyMMddHH24MISS'), 'yyyy-MM-dd DY HH24:MI:SS') conn_dttm,
				his.conn_ip,
				usr.usr_nm
			from sns_login_history his, sns_user usr
			where his.usr_id = usr.usr_id
			<if test="type == 'user'">
				and (usr.sys_admin_yn != 'Y' or usr.sys_admin_yn is null)
			</if>
			<if test="type == 'admin'">
				and usr.sys_admin_yn = 'Y'
			</if>
			<if test="flag == 'home'">
				<![CDATA[
					and substr(his.conn_dttm,0,8) <= to_char(sysdate+1,'yyyymmdd')
				]]>
			</if>
			<if test="flag != 'home'">
				<![CDATA[
					and substr(his.conn_dttm,0,8) >= #{start_dttm}
					and substr(his.conn_dttm,0,8) <= #{end_dttm}
				]]>
			</if>

		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>
	
	<select id="listUserRank" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.main.dao.AdminMainDAO.listUserRank] 사용자별 이용현황 */
		SELECT
			*
		FROM
		(
			select
				COUNT(usr_id) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY rank_cnt desc) RN,
				fn_get_usr_nm(usr_id) as usr_nm, rank_cnt
			from (
				select
					usr_id, count(*) as rank_cnt
				from sns_user usr, sns_post post
				where usr.usr_id = post.tar_usr_id
				<![CDATA[
					and substr(post.crt_dttm,0,8) <= to_char(sysdate+1,'yyyymmdd')
				]]>
				group by usr_id
			)
		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>
	
	<select id="listUserTotalRank" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.main.dao.AdminMainDAO.listUserTotalRank] 사용자별 total 이용현황 */
		SELECT
			SUM(rank_cnt) TOTAL_CNT
		FROM
		(
			select
				ROW_NUMBER() OVER(ORDER BY rank_cnt desc) RN,
				fn_get_usr_nm(usr_id) as usr_nm, rank_cnt
			from (
				select
					usr_id, count(*) as rank_cnt
				from sns_user usr, sns_post post
				where usr.usr_id = post.tar_usr_id
				<![CDATA[
					and substr(post.crt_dttm,0,8) <= to_char(sysdate+1,'yyyymmdd')
				]]>
				group by usr_id
			)
		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>
	
	
</mapper>