<?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="kr.co.i2talk.cms">
<!-- 1. 추가  쿼리 메소드 작성 -->
    <select id="kr.co.i2talk.cms.listCmsChartInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsChartInfo */
SELECT
	*
FROM
(
SELECT COUNT(*) OVER() TOTAL_CNT, 
	ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) RN, 
	a.chrt_id, a.chrt_nm, a.chrt_flag, a.descrip, a.read_cnt, a.crt_usr_id, 
	a.crt_dttm, a.mod_usr_id, a.mod_dttm
FROM
	cms_chart_info a
WHERE 1=1
ORDER BY
	 a.crt_dttm DESC
)
WHERE
	RN BETWEEN (#{page} - 1) * #{limit} AND (#{page} * #{limit})
    </select>

    <select id="kr.co.i2talk.cms.viewCmsChartInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.viewCmsChartInfo */
SELECT a.chrt_info_id, a.chrt_info_nm, a.chrt_flag, a.chrt_tp, a.descrip, a.read_cnt
	 , a.crt_usr_id, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, FN_GET_USR_PHOTO(a.crt_usr_id) crt_photo_img, a.crt_dttm
	 , FN_GET_USR_ORIGIN_PHOTO(a.crt_usr_id) as crt_photo_img_1
	 , a.mod_usr_id, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm, FN_GET_USR_PHOTO(a.mod_usr_id) mod_photo_img, a.mod_dttm
	 , FN_GET_USR_ORIGIN_PHOTO(a.mod_usr_id) as mod_photo_img_1
	 , a.src_id, a.tmplt_id, a.up_dt, a.file_id, src_flag, row_cnt, col_cnt, b.tbl_nm, c.file_nm, d.favo_yn
  FROM cms_chart_info a LEFT OUTER JOIN cms_source_info b ON a.src_id = b.src_id
       LEFT OUTER JOIN cms_chart_template c ON a.tmplt_id = c.tmplt_id
     , cms_chart_follow d
 WHERE a.chrt_info_id = #{chrt_info_id}
   AND a.chrt_info_id = d.chrt_info_id
   AND d.usr_id = #{usr_id}
    </select>

    <insert id="kr.co.i2talk.cms.insertCmsChartInfo"
		parameterType="Map">
/* kr.co.i2talk.cms.insertCmsChartInfo */
INSERT INTO cms_chart_info 
	 ( chrt_info_id, chrt_info_nm, chrt_flag, descrip, chrt_tp, tmplt_id, src_id, file_id
	 , src_flag, up_dt, row_cnt, col_cnt, read_cnt, crt_usr_id, crt_dttm, mod_usr_id, mod_dttm)
VALUES (#{chrt_info_id}, #{chrt_info_nm}, #{chrt_flag}, #{descrip}, #{chrt_tp}, #{tmplt_id}, #{src_id}, #{file_id}
	 , #{src_flag}, #{up_dt}, #{row_cnt}, #{col_cnt}, 0, #{crt_usr_id}, #{crt_dttm}, #{mod_usr_id}, #{mod_dttm})
    </insert>
    
	<update id="kr.co.i2talk.cms.updateCmsChartInfo"
		parameterType="Map">
/* kr.co.i2talk.cms.updateCmsChartInfo */
UPDATE cms_chart_info
   SET chrt_info_nm = #{chrt_info_nm}
	 , chrt_flag = #{chrt_flag}
	 , descrip = #{descrip}
	 , chrt_tp = #{chrt_tp}
	 , tmplt_id = #{tmplt_id}
	 , src_id = #{src_id}
	 , up_dt = #{up_dt}
	 , mod_usr_id = #{mod_usr_id}
	 , mod_dttm = #{mod_dttm}
 WHERE chrt_info_id = #{chrt_info_id}
    </update>

	<delete id="kr.co.i2talk.cms.deleteCmsChartInfo"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsChartInfo */
DELETE FROM cms_chart_info WHERE chrt_info_id = #{chrt_info_id}
    </delete>
<!-- 1. 추가  쿼리 메소드 작성 끝 -->

<!-- 2. 추가  쿼리 메소드 작성 -->

    <select id="kr.co.i2talk.cms.listCmsChart"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsChart */
SELECT *
  FROM (
		SELECT COUNT(*) OVER() TOTAL_CNT
			 , ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) RN
			 , COUNT(*) OVER() - ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) + 1 NMBR
			 , a.chrt_info_id, a.chrt_info_nm, a.chrt_flag, a.chrt_tp, a.descrip, a.read_cnt, a.crt_usr_id
			 , FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm, a.mod_usr_id, a.mod_dttm
		  FROM cms_chart_info a
		 WHERE a.chrt_flag = #{chrt_flag}
		   AND a.crt_usr_id = #{tar_usr_id}
		<if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">
			<if test="searchField == 'title'">
			AND a.chrt_info_nm like '%' || #{searchKeyword} || '%'
			</if>
			<if test="searchField == 'cont'">
			AND a.descrip like '%' || #{searchKeyword} || '%'
			</if>
		</if>
		ORDER BY a.crt_dttm DESC
	 )
 WHERE RN BETWEEN (#{page} - 1) * #{limit} + 1 AND (#{page} * #{limit})
    </select>

    <select id="kr.co.i2talk.cms.listSharedCmsChartInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listSharedCmsChartInfo */
SELECT *
  FROM (
		SELECT COUNT(*) OVER() TOTAL_CNT
			 , ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) RN
			 , COUNT(*) OVER() - ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) + 1 NMBR
			 , a.*
		   FROM (
				-- company chart
				SELECT a.chrt_info_id, a.chrt_info_nm, a.chrt_flag, a.chrt_tp, a.descrip, a.read_cnt, a.crt_usr_id
					 , FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm, a.mod_usr_id, a.mod_dttm
				  FROM cms_chart_info a
				 WHERE a.comp_share_yn = 'Y'
				   AND a.chrt_flag = #{chrt_flag}
				<if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">
					<if test="searchField == 'title'">
					AND a.chrt_info_nm like '%' || #{searchKeyword} || '%'
					</if>
					<if test="searchField == 'cont'">
					AND a.descrip like '%' || #{searchKeyword} || '%'
					</if>
				</if>
				union all
				-- my chart AND shared chart
				SELECT a.chrt_info_id, a.chrt_info_nm, a.chrt_flag, a.chrt_tp, a.descrip, a.read_cnt, a.crt_usr_id
					 , FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm, a.mod_usr_id, a.mod_dttm
				  FROM cms_chart_info a
				     , cms_chart_follow b
				 WHERE a.chrt_info_id = b.chrt_info_id
				   AND a.comp_share_yn != 'Y'
				   AND a.chrt_flag = #{chrt_flag}
				   AND b.usr_id = #{tar_usr_id}
				<if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">
					<if test="searchField == 'title'">
					AND a.chrt_info_nm like '%' || #{searchKeyword} || '%'
					</if>
					<if test="searchField == 'cont'">
					AND a.descrip like '%' || #{searchKeyword} || '%'
					</if>
				</if>
		) a
		ORDER BY a.crt_dttm DESC
	 )
 WHERE RN BETWEEN (#{page} - 1) * #{limit} + 1 AND (#{page} * #{limit})
    </select>

    <select id="kr.co.i2talk.cms.listFavoriteChartInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listFavoriteChartInfo */
SELECT *
  FROM (
		SELECT COUNT(*) OVER() TOTAL_CNT
			 , ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) RN
			 , COUNT(*) OVER() - ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) + 1 NMBR
			 , a.chrt_info_id, a.chrt_info_nm, a.chrt_flag, a.chrt_tp, a.descrip, a.read_cnt, a.crt_usr_id
			 , FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm, a.mod_usr_id, a.mod_dttm
		  FROM cms_chart_info a
			 , cms_chart_follow b
		 WHERE a.chrt_info_id = b.chrt_info_id
		   AND a.comp_share_yn != 'Y'
		   AND b.usr_id = #{tar_usr_id}
		   AND b.favo_yn = 'Y'
		<if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">
			<if test="searchField == 'title'">
			AND a.chrt_info_nm like '%' || #{searchKeyword} || '%'
			</if>
			<if test="searchField == 'cont'">
			AND a.descrip like '%' || #{searchKeyword} || '%'
			</if>
		</if>
		ORDER BY a.crt_dttm DESC
	 )
 WHERE RN BETWEEN (#{page} - 1) * #{limit} + 1 AND (#{page} * #{limit})
    </select>

    <select id="kr.co.i2talk.cms.listCmsMappingInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsMappingInfo */
SELECT COUNT(*) OVER() TOTAL_CNT, chrt_info_id, fld_nm, clm_nm, ord_num, ord_flag, key_fld_yn, srt_ord, crt_usr_id
  FROM cms_mapping_info
 WHERE chrt_info_id = #{chrt_info_id}
 ORDER BY srt_ord ASC
    </select>

    <select id="kr.co.i2talk.cms.viewCmsMappingInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.viewCmsMappingInfo */
SELECT a.chrt_info_id, a.fld_nm, a.clm_nm, a.ord_num, a.ord_flag, a.key_fld_yn, a.srt_ord
	 , a.crt_usr_id, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm
	 , a.mod_usr_id, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm, a.mod_dttm
  FROM cms_mapping_info a
 WHERE a.chrt_info_id = #{chrt_info_id}
 ORDER BY a.srt_ord
    </select>

    <insert id="kr.co.i2talk.cms.insertCmsMappingInfo"
		parameterType="Map">
/* kr.co.i2talk.cms.insertCmsMappingInfo */
INSERT INTO cms_mapping_info 
	 ( chrt_info_id, fld_nm, clm_nm, ord_num, ord_flag, key_fld_yn, srt_ord, crt_usr_id, crt_dttm, mod_usr_id, mod_dttm)
VALUES (#{chrt_info_id}, #{fld_nm}, #{clm_nm}, #{ord_num}, #{ord_flag}, #{key_fld_yn}, #{srt_ord}, #{crt_usr_id}, #{crt_dttm}, #{mod_usr_id}, #{mod_dttm})
    </insert>
    
	<update id="kr.co.i2talk.cms.updateCmsMappingInfo"
		parameterType="Map">
/* kr.co.i2talk.cms.updateCmsMappingInfo */
UPDATE cms_mapping_info
   SET fld_nm = #{fld_nm}
	 , clm_nm = #{clm_nm}
	 , ord_num = #{ord_num}
	 , ord_flag = #{ord_flag}
	 , key_fld_yn = #{key_fld_yn}
	 , srt_ord = #{srt_ord}
	 , mod_usr_id = #{mod_usr_id}
	 , mod_dttm = #{mod_dttm}
 WHERE chrt_info_id = #{chrt_info_id}
   AND clm_nm = #{clm_nm}
    </update>

	<delete id="kr.co.i2talk.cms.deleteCmsMappingInfo"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsMappingInfo */
DELETE FROM cms_mapping_info WHERE chrt_info_id = #{chrt_info_id}
    </delete>


    <select id="kr.co.i2talk.cms.listCmsChartData"
    	parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsChartData */
SELECT #{keyColumn},
		<foreach collection="columns" item="item" index="index" open="" separator=", " close="">
			#{item}
		</foreach>
  FROM #{tableName}
	<if test='pkValue != null'>
 WHERE #{pkName} = #{pkValue}
	</if>
 ORDER BY #{orderBy} #{ord_flag}
    </select>

    <insert id="kr.co.i2talk.cms.insertCmsChartData"
		parameterType="HashMap">
/* kr.co.i2talk.cms.insertCmsChartData */
INSERT INTO CMS_CHART_DATA (chrt_info_id, srt_ord, dat_dt, dat_nm
	 , val1, val2, val3, val4, val5, val6, val7, val8, val9, val10
	 , val11, val12, val13, val14, val15, val16, val17, val18, val19, val20
	 , val21, val22, val23, val24, val25, val26, val27, val28, val29, val30
	 , val31, val32, val33, val34, val35, val36, val37, val38, val39, val40
	 , val41, val42, val43, val44, val45, val46, val47, val48, val49, val50)
VALUES (#{chrt_info_id}, #{srt_ord}, #{dat_dt}, #{dat_nm}
	 , #{val1}, #{val2}, #{val3}, #{val4}, #{val5}, #{val6}, #{val7}, #{val8}, #{val9}, #{val10}
	 , #{val11}, #{val12}, #{val13}, #{val14}, #{val15}, #{val16}, #{val17}, #{val18}, #{val19}, #{val20}
	 , #{val21}, #{val22}, #{val23}, #{val24}, #{val25}, #{val26}, #{val27}, #{val28}, #{val29}, #{val30}
	 , #{val31}, #{val32}, #{val33}, #{val34}, #{val35}, #{val36}, #{val37}, #{val38}, #{val39}, #{val40}
	 , #{val41}, #{val42}, #{val43}, #{val44}, #{val45}, #{val46}, #{val47}, #{val48}, #{val49}, #{val50})
    </insert>

	<delete id="kr.co.i2talk.cms.deleteCmsChartData"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsChartData */
DELETE FROM CMS_CHART_DATA WHERE chrt_info_id = #{chrt_info_id}
    </delete>

    <insert id="kr.co.i2talk.cms.insertCmsChart"
		parameterType="Map">
/* kr.co.i2talk.cms.insertCmsChart */
INSERT INTO cms_chart_info ( 
	chrt_id, chrt_nm, chrt_flag, descrip, read_cnt, crt_usr_id, 
	crt_dttm, mod_usr_id, mod_dttm)
VALUES (
	#{chrt_id}, #{chrt_nm}, #{chrt_flag}, #{descrip}, 0, #{crt_usr_id}, 
	#{crt_dttm}, #{mod_usr_id}, #{mod_dttm})
    </insert>
    
	<update id="kr.co.i2talk.cms.updateCmsChart"
		parameterType="Map">
/* kr.co.i2talk.cms.updateCmsChart */
UPDATE cms_chart_info SET
	chrt_id = #{chrt_id}, 
	chrt_nm = #{chrt_nm}, 
	chrt_flag = #{chrt_flag}, 
	descrip = #{descrip}, 
	mod_usr_id = #{mod_usr_id}, 
	mod_dttm = #{mod_dttm}
WHERE
    </update>

	<delete id="kr.co.i2talk.cms.deleteCmsChart"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsChart */
DELETE FROM cms_chart_info WHERE
    </delete>


    <select id="kr.co.i2talk.cms.listCmsChartFollow" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.cms.listCmsChartFollow */
		SELECT a.usr_id, FN_GET_USR_NM(a.usr_id) usr_nm, FN_GET_USR_PHOTO(a.usr_id) usr_photo_img
			, FN_GET_USR_ORIGIN_PHOTO(a.usr_id) as usr_photo_img_1
		FROM cms_chart_follow a
			, cms_chart_info b
		WHERE a.chrt_info_id = #{chrt_info_id}
		   	AND a.chrt_info_id = b.chrt_info_id
		   	AND a.usr_id != b.crt_usr_id
			
    </select>

    <insert id="kr.co.i2talk.cms.insertCmsChartFollow"
		parameterType="Map">
/* kr.co.i2talk.cms.insertCmsChartFollow */
INSERT INTO cms_chart_follow 
	 ( usr_id, chrt_info_id, crt_usr_id, crt_dttm, mod_usr_id, mod_dttm)
VALUES (#{usr_id}, #{chrt_info_id}, #{crt_usr_id}, #{crt_dttm}, #{mod_usr_id}, #{mod_dttm})
    </insert>
    
	<update id="kr.co.i2talk.cms.updateCmsChartFollow"
		parameterType="Map">
/* kr.co.i2talk.cms.updateCmsChartFollow */
UPDATE cms_chart_follow
   SET mod_usr_id = #{mod_usr_id}
	 , mod_dttm = #{mod_dttm}
 WHERE chrt_info_id = #{chrt_info_id}
   AND usr_id = #{usr_id}
    </update>

	<delete id="kr.co.i2talk.cms.deleteAllCmsChartFollow"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteAllCmsChartFollow */
DELETE FROM cms_chart_follow WHERE chrt_info_id = #{chrt_info_id}
    </delete>

	<delete id="kr.co.i2talk.cms.deleteCmsChartFollow"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsChartInfo */
DELETE FROM cms_chart_follow WHERE chrt_info_id = #{chrt_info_id} AND usr_id = #{usr_id}
    </delete>


    <select id="kr.co.i2talk.cms.listCmsOwnChart"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsOwnChart */
SELECT ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) RN
	 , a.chrt_info_id, a.chrt_info_nm, a.chrt_flag, a.chrt_tp, a.descrip, a.crt_usr_id
	 , FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm, a.mod_usr_id, a.mod_dttm
  FROM cms_chart_info a
 WHERE a.chrt_flag != 'DASHBOARD'
   AND a.crt_usr_id = #{tar_usr_id}
    </select>

    <select id="kr.co.i2talk.cms.listCmsSharedChart"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsSharedChart */
SELECT ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) RN
	 , a.chrt_info_id, a.chrt_info_nm, a.chrt_flag, a.chrt_tp, a.descrip, a.crt_usr_id
	 , FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm, a.mod_usr_id, a.mod_dttm
  FROM cms_chart_info a
     , cms_chart_follow b
 WHERE a.chrt_info_id = b.chrt_info_id
   AND a.chrt_flag != 'DASHBOARD'
   AND b.usr_id = #{tar_usr_id}
    </select>

    <insert id="kr.co.i2talk.cms.insertCmsDashboardChart"
		parameterType="Map">
/* kr.co.i2talk.cms.insertCmsDashboardChart */
INSERT INTO cms_chart 
	 ( chrt_id, dshbrd_id, chrt_info_id, chrt_nm, pos_x, pos_y, size_w, size_h
	 , crt_usr_id, crt_dttm, mod_usr_id, mod_dttm)
VALUES 
	 ( #{chrt_id}, #{dshbrd_id}, #{chrt_info_id}, #{chrt_nm}, #{pos_x}, #{pos_y}, #{size_w}, #{size_h}
	 , #{crt_usr_id}, #{crt_dttm}, #{mod_usr_id}, #{mod_dttm})
    </insert>

    <select id="kr.co.i2talk.cms.listCmsDashboardChart"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsDashboardChart */
SELECT ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) RN
	 , a.chrt_id, a.dshbrd_id, a.chrt_info_id, a.chrt_nm, a.pos_x, a.pos_y, a.size_w, a.size_h
	 , b.chrt_info_nm, b.chrt_tp, b.chrt_flag
	 , a.crt_usr_id, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm
	 , a.mod_usr_id, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm, a.mod_dttm
  FROM cms_chart a
	 , cms_chart_info b
 WHERE a.dshbrd_id = #{chrt_info_id}
   AND a.chrt_info_id = b.chrt_info_id
    </select>

	<delete id="kr.co.i2talk.cms.deleteCmsDashboardChart"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsDashboardChart */
DELETE FROM cms_chart WHERE dshbrd_id = #{chrt_info_id}
    </delete>

	<update id="kr.co.i2talk.cms.updateCmsChartInfoForReadCount"
		parameterType="Map">
/* kr.co.i2talk.cms.updateCmsChartInfoForReadCount */
UPDATE cms_chart_info
   SET read_cnt = nvl2(read_cnt, read_cnt, 0) + 1
 WHERE chrt_info_id = #{chrt_info_id}
    </update>

	<update id="kr.co.i2talk.cms.updateFavoriteChart"
		parameterType="Map">
/* kr.co.i2talk.cms.updateFavoriteChart */
UPDATE cms_chart_follow
   SET favo_yn = #{favo_yn}
 WHERE chrt_info_id = #{chrt_info_id}
   AND usr_id = #{usr_id}
    </update>

    <select id="kr.co.i2talk.cms.checkChartUsedToDashboard"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.checkChartUsedToDashboard */
SELECT dshbrd_id 
FROM cms_chart
WHERE chrt_info_id = #{chrt_info_id}
AND ROWNUM = 1
    </select>

    <select id="kr.co.i2talk.cms.hasChartPermission"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.hasChartPermission */
SELECT a.usr_id
  FROM cms_chart_follow a
 WHERE a.chrt_info_id = #{chrt_info_id}
   AND a.usr_id = #{usr_id}
    </select>
    
     <select id="kr.co.i2talk.cms.listWorkProc"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listWorkProc */
SELECT *
FROM
	(
	select 
		count(*) group_cnt	
	from sns_group
	) group_cnt,
	(
	SELECT		
		COUNT(*) AS FEED_CNT
	FROM SNS_POST
	WHERE TAR_OBJ_TP IN ('USER','GROUP')
	AND POST_TP IN ('FEED','POLL')			 
	AND SUBSTR(REG_DTTM,0,8) =  to_char(SYSDATE, 'YYYYMMDD')
	) FEED_CNT,
	
	(
	SELECT
		COUNT(*) AS OFF_CONFERENCE_CNT
	FROM SNS_CONFERENCE 
	WHERE SUBSTR(CFRC_DT,0,8) =  to_char(SYSDATE, 'YYYYMMDD')
	AND CFRC_ROOM_TP = 'OFFLINE'
	) OFF_CONFERENCE_CNT,
	
	(
	SELECT
		COUNT(*) AS ON_CONFERENCE_CNT
	FROM SNS_CONFERENCE 
	WHERE SUBSTR(CFRC_DT,0,8) =  to_char(SYSDATE, 'YYYYMMDD') 
	AND CFRC_ROOM_TP = 'ONLINE'
	) ON_CONFERENCE_CNT,
	
	(
	select
		count(*) access_cnt
	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
		WHERE his.access_token = token.access_token 
		and SUBSTR(his.req_DTTM,0,8) = to_char(SYSDATE, 'YYYYMMDD')  
		group by SUBSTR(his.req_DTTM,0,8), his.access_token, token.client_id ) as his,
		sns_client as client
		where his.client_id = client.client_id)
	) access_cnt,
	
	(
	SELECT
		count(*) appr_cnt
	FROM sns_approve sa,
		sns_post sp, sns_post_user spu
	WHERE 1=1
	and sa.appr_id = sp.tar_obj_id
	and sp.post_id = spu.post_id
	and sp.post_tp = 'APPR'							 
	AND spu.usr_tp != 'CRTR'					 
	AND sa.appr_st_cd = 'APPR'	
	AND spu.fnl_appr_yn = 'Y'
	AND sa.appr_report_tp = 'F'	
	AND SUBSTR(sa.appr_cplt_dttm,0,8) = to_char(SYSDATE, 'YYYYMMDD') 
	) appr_cnt	
    </select>
    
     <select id="kr.co.i2talk.cms.listWorkProcFeed"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listWorkProcFeed */
SELECT
	COUNT(DTTM) OVER() TOTAL_CNT,
	ROW_NUMBER() OVER(ORDER BY DTTM DESC) RN,		 
	TO_CHAR(TO_DATE(DTTM,'YYYYMM'),'YYYY-MM') DTTM,			 
	MAX(FEED_CNT) AS FEED_CNT,
	MAX(RECV_CNT) AS RECV_CNT
FROM (
	SELECT
		SUBSTR(REG_DTTM,0,6) AS DTTM, 
		COUNT(*) AS FEED_CNT,
		0 AS RECV_CNT
	FROM SNS_POST
	WHERE TAR_OBJ_TP IN ('USER','GROUP')
	AND POST_TP IN ('FEED','POLL')		
	AND SUBSTR(REG_DTTM,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')		 
	GROUP BY SUBSTR(REG_DTTM,0,6)
	
	union all
	
	select
		SUBSTR(conn_dttm,0,6) conn_dttm, 
		0 AS FEED_CNT,
		COUNT(*) AS RECV_CNT
	from (
	select
		his.access_token, his.conn_dttm, client.client_tp_cd
	from
	(select
		his.access_token, SUBSTR(his.req_DTTM,0,6) conn_dttm, token.client_id
	from sns_request_history his, sns_access_token token
	WHERE his.access_token = token.access_token
	AND SUBSTR(his.req_DTTM,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')		 
	group by SUBSTR(his.req_DTTM,0,6), his.access_token, token.client_id ) as his,
	sns_client as client
	where his.client_id = client.client_id
	) 
	GROUP BY SUBSTR(conn_dttm,0,6)			 
	
)
GROUP BY DTTM
ORDER BY DTTM ASC
    </select>
    
    <select id="kr.co.i2talk.cms.listWorkProcGroup"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listWorkProcGroup */
	SELECT			 
	TO_CHAR(TO_DATE(DTTM,'YYYYMM'),'YYYY-MM') DTTM,			 
	MAX(GROUP_CNT) AS GROUP_CNT,
	MAX(OFF_CONFERENCE_CNT) AS OFF_CONFERENCE_CNT,
	MAX(ON_CONFERENCE_CNT) AS ON_CONFERENCE_CNT,
	MAX(APPR_CNT) AS APPR_CNT
FROM (
	select 
		SUBSTR(CRT_DTTM,0,6) AS DTTM, 
		COUNT(*) AS GROUP_CNT,
		0 AS OFF_CONFERENCE_CNT,
		0 AS ON_CONFERENCE_CNT,
		0 AS APPR_CNT	
	from sns_group
	WHERE SUBSTR(CRT_DTTM,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')	
	GROUP BY SUBSTR(CRT_DTTM,0,6)
	
	UNION ALL
	
	SELECT
		SUBSTR(CFRC_DT,0,6) AS DTTM, 
		0 AS GROUP_CNT,
		COUNT(*) AS OFF_CONFERENCE_CNT,
		0 AS ON_CONFERENCE_CNT,
		0 AS APPR_CNT	
	FROM SNS_CONFERENCE 
	WHERE SUBSTR(CFRC_DT,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')	
	AND CFRC_ROOM_TP = 'OFFLINE'
	GROUP BY SUBSTR(CFRC_DT,0,6)
	
	UNION ALL
	
	SELECT
		SUBSTR(CFRC_DT,0,6) AS DTTM, 
		0 AS GROUP_CNT,
		0 AS OFF_CONFERENCE_CNT,
		COUNT(*) AS ON_CONFERENCE_CNT,
		0 AS APPR_CNT	
	FROM SNS_CONFERENCE 
	WHERE SUBSTR(CFRC_DT,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')	
	AND CFRC_ROOM_TP = 'ONLINE'
	GROUP BY SUBSTR(CFRC_DT,0,6)
	
	UNION ALL
	
	SELECT
		SUBSTR(sa.appr_cplt_dttm,0,6) AS DTTM, 
		0 AS GROUP_CNT,
		0 AS OFF_CONFERENCE_CNT,
		0 AS ON_CONFERENCE_CNT,
		COUNT(*) AS APPR_CNT	
	FROM sns_approve sa,
		sns_post sp, sns_post_user spu
	WHERE 1=1
	and sa.appr_id = sp.tar_obj_id
	and sp.post_id = spu.post_id
	and sp.post_tp = 'APPR'							 
	AND spu.usr_tp != 'CRTR'					 
	AND sa.appr_st_cd = 'APPR'	
	AND spu.fnl_appr_yn = 'Y'
	AND sa.appr_report_tp = 'F'	
	AND SUBSTR(sa.appr_cplt_dttm,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')	
	GROUP BY SUBSTR(sa.appr_cplt_dttm,0,6)	
	
)
GROUP BY DTTM
ORDER BY DTTM ASC
	</select>
    
    
     <select id="kr.co.i2talk.cms.listWorkCoop"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listWorkCoop */
	select
		*
	from	
	(SELECT 
		count(*) lotk_cnt
	FROM sns_work 
	WHERE grp_cd = 'LOTK' 
	AND pgrs_st != 'FIN'
	AND work_use_yn = 'Y'	
	) lotk_cnt,	
	
	(SELECT 
		count(*) gtsk_cnt
	FROM sns_work 
	WHERE grp_cd = 'GTSK' 
	AND pgrs_st != 'FIN' 
	AND work_use_yn = 'Y'
	AND up_work_id is not null
	) gtsk_cnt
    </select>
    
     <select id="kr.co.i2talk.cms.listWorkCoopProcess"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listWorkCoopProcess */
select
		TO_CHAR(TO_DATE(DTTM,'YYYYMM'),'YYYY-MM') DTTM,
		max(lotk_cnt) lotk_cnt,
		max(gtsk_cnt) gtsk_cnt
	from	
	(
	SELECT 
		SUBSTR(CRT_DTTM,0,6) AS DTTM, 
		count(*) lotk_cnt,
		0 AS gtsk_cnt
	FROM sns_work 
	WHERE grp_cd = 'LOTK' 
	AND pgrs_st != 'FIN'
	AND work_use_yn = 'Y'
	AND SUBSTR(CRT_DTTM,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')	
	GROUP BY SUBSTR(CRT_DTTM,0,6) 
	
	UNION ALL	
	
	SELECT 
		SUBSTR(CRT_DTTM,0,6) AS DTTM,
		0 AS lotk_cnt,
		count(*) gtsk_cnt
	FROM sns_work 
	WHERE grp_cd = 'GTSK' 
	AND pgrs_st != 'FIN' 
	AND work_use_yn = 'Y'
	AND up_work_id is not null
	AND SUBSTR(CRT_DTTM,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')	
	GROUP BY SUBSTR(CRT_DTTM,0,6) 
	)
GROUP BY DTTM
ORDER BY DTTM ASC
    </select>
    
    <select id="kr.co.i2talk.cms.listWorkCoopIsu"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listWorkCoopIsu */
select		
	TO_CHAR(TO_DATE(DTTM,'YYYYMM'),'YYYY-MM') DTTM,				 
	TO_CHAR(MAX(oper_avg), 'FM999,990.0') AS oper_isu_avg,
	TO_CHAR(MAX(work_avg), 'FM999,990.0') AS work_isu_avg
from
(
	select	
		SUBSTR(trnf_dttm,0,6) DTTM,		 
		sum(isu_start_dt) /sum(isu_cnt) oper_avg,
		0 AS work_avg
	from					 
	(select  
		1 as isu_cnt,
		TO_DATE(substr(IFNULL(vi.isu_cplt_dttm,to_char(SYSDATE, 'YYYYMMDD')),0,8), 'YYYYMMDD') - TO_DATE(substr(IFNULL(vi.isu_start_dt,to_char(SYSDATE, 'YYYYMMDD')),0,8), 'YYYYMMDD')  isu_start_dt,	
		substr(IFNULL(vi.trnf_dttm,to_char(SYSDATE, 'YYYYMM')),0,6) trnf_dttm
	from VW_TASK_ISU_HSTRY vi,
		 SNS_TASK st
	where vi.isu_task_id = st.task_id
	and	vi.ISU_ST_CD = 'FNSH_END'
	and SUBSTR(vi.trnf_dttm,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')
	and st.tar_obj_tp = 'OPER'	
	)
	group by trnf_dttm
	
	UNION ALL
	
	select	
		SUBSTR(trnf_dttm,0,6) DTTM,	 
		0 as oper_avg,
		sum(isu_start_dt) /sum(isu_cnt) work_avg
	from					 
	(select  
		1 as isu_cnt,
		TO_DATE(substr(IFNULL(vi.isu_cplt_dttm,to_char(SYSDATE, 'YYYYMMDD')),0,8), 'YYYYMMDD') - TO_DATE(substr(IFNULL(vi.isu_start_dt,to_char(SYSDATE, 'YYYYMMDD')),0,8), 'YYYYMMDD')  isu_start_dt,	
		substr(IFNULL(vi.trnf_dttm,to_char(SYSDATE, 'YYYYMM')),0,6) trnf_dttm
	from VW_TASK_ISU_HSTRY vi,
		 SNS_TASK st
	where vi.isu_task_id = st.task_id
	and	vi.ISU_ST_CD = 'FNSH_END'
	and SUBSTR(vi.trnf_dttm,0,6) between to_char(add_months(sysdate,-6),'YYYYMM') and to_char(SYSDATE, 'YYYYMM')
	and st.tar_obj_tp = 'WORK'	
	)
	group by trnf_dttm
)
group by DTTM
ORDER BY DTTM ASC
    </select>


<!-- 2. 추가  쿼리 메소드 작성 끝 -->
</mapper>
