Browse Source

【用户数据分析】【sql查询速度优化】-王公峰-2020-05-27

feature/dangjian
wanggongfeng 5 years ago
parent
commit
c6c7cf345f
  1. 503
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml

503
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml

@ -381,61 +381,82 @@
) t ) t
GROUP BY t.DEPT_ID--> GROUP BY t.DEPT_ID-->
SELECT SELECT
t.DEPT_ID gridId, COUNT( t.ID ) registerCount, user.DEPT_ID gridId,
COUNT(((t.AUTHENTICATED_TYPE='0' and t.AUTHENTICATED_FLAG = '1') or (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '0' AND t.HistoryCount > 0)) OR NULL) residentCount, COUNT(user.ID) AS registerCount,
COUNT((t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1') OR NULL) partyCount COUNT((user.AUTHENTICATED_TYPE = '0' AND user.AUTHENTICATED_FLAG = '1') OR (user.AUTHENTICATED_TYPE = '1' AND user.AUTHENTICATED_FLAG = '0' AND user.HistoryCount > 0) OR NULL) AS residentCount ,
FROM ( COUNT((user.AUTHENTICATED_TYPE = '1' AND user.AUTHENTICATED_FLAG = '1') OR NULL) AS partyCount
SELECT
uu.ID, ifnull(if(uu.DEPT_ID = 0,null,uu.DEPT_ID),RELATION.Grid_id) DEPT_ID, uu.STATE, uu.PARTY_FLAG,
HISTORY.AUTHENTICATED_TYPE,HISTORY.AUTHENTICATED_FLAG,HISCOUNT.HistoryCount
FROM FROM
esua_epdc_user.epdc_user uu (
select newuu.ID,newuu.AUTHENTICATED_TYPE,newuu.AUTHENTICATED_FLAG,newuu.HistoryCount,newuu.DEPT_ID from (
LEFT JOIN ( SELECT
SELECT MAX( CREATED_TIME ) AS CREATED_TIME, USER_ID DISTINCT uu.ID,uu.DEL_FLAG,uu.CREATED_TIME,
FROM esua_epdc_user.epdc_user_authenticate_history (
WHERE DEL_FLAG = '0' AND AUTHENTICATED_TYPE IN ( '0', '1' ) SELECT
AUTHENTICATED_TYPE
FROM
esua_epdc_user.epdc_user_authenticate_history
WHERE
DEL_FLAG = '0'
AND AUTHENTICATED_TYPE IN ( '0', '1' )
<if test="endTime != ''"> <if test="endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime} and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime}
</if> </if>
GROUP BY USER_ID AND USER_ID = uu.ID
) MAXHIS ON MAXHIS.USER_ID = uu.ID ORDER BY
CREATED_TIME DESC,
LEFT JOIN esua_epdc_user.epdc_user_authenticate_history HISTORY ON HISTORY.USER_ID = MAXHIS.USER_ID AND HISTORY.CREATED_TIME = MAXHIS.CREATED_TIME AND HISTORY.DEL_FLAG = '0' id
LEFT JOIN ( LIMIT 1
) AS AUTHENTICATED_TYPE,
(
SELECT SELECT
count(id) AS HistoryCount, AUTHENTICATED_FLAG
USER_ID
FROM FROM
esua_epdc_user.epdc_user_authenticate_history esua_epdc_user.epdc_user_authenticate_history
WHERE WHERE
DEL_FLAG = '0' DEL_FLAG = '0'
AND AUTHENTICATED_TYPE IN ( '0', '1' ) AND AUTHENTICATED_TYPE IN ( '0', '1' )
AND AUTHENTICATED_FLAG= '1'
<if test="endTime != ''"> <if test="endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime} and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime}
</if> </if>
GROUP BY USER_ID AND USER_ID = uu.ID
) HISCOUNT ON HISCOUNT.USER_ID = uu.ID ORDER BY
LEFT JOIN ( CREATED_TIME DESC ,
SELECT MIN( CREATED_TIME ) AS CREATED_TIME, id
USER_ID FROM esua_epdc_user.epdc_user_grid_relation LIMIT 1
WHERE ) AS AUTHENTICATED_FLAG,
DEL_FLAG = '0' (
GROUP BY SELECT
USER_ID count( id ) AS HistoryCount
) MINRELA ON MINRELA.USER_ID = uu.ID FROM
LEFT JOIN esua_epdc_user.epdc_user_grid_relation RELATION ON RELATION.USER_ID = MINRELA.USER_ID AND RELATION.DEL_FLAG = '0' AND MINRELA.CREATED_TIME = RELATION.CREATED_TIME esua_epdc_user.epdc_user_authenticate_history
WHERE WHERE
uu.DEL_FLAG = '0' DEL_FLAG = '0'
AND AUTHENTICATED_TYPE IN ( '0', '1' )
AND AUTHENTICATED_FLAG = '1'
<if test="endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime}
</if>
AND USER_ID = uu.ID
) AS HistoryCount,
ifnull(if(uu.DEPT_ID = 0, NULL, uu.DEPT_ID), (
SELECT GRID_ID FROM esua_epdc_user.epdc_user_grid_relation
WHERE DEL_FLAG = '0' AND USER_ID = uu.ID
ORDER BY
CREATED_TIME,
id
LIMIT 1
)) AS DEPT_ID
FROM
esua_epdc_user.epdc_user uu ) newuu
where newuu.DEL_FLAG = '0'
<if test="gridIdList != null and gridIdList.size() > 0"> <if test="gridIdList != null and gridIdList.size() > 0">
AND ifnull(if(uu.DEPT_ID = 0,null,uu.DEPT_ID),RELATION.Grid_id) in <include refid="foreachGridIdList"></include> AND newuu.DEPT_ID in <include refid="foreachGridIdList"></include>
</if> </if>
<if test="startTime != null and endTime != null and endTime != ''"> <if test="startTime != null and endTime != null and endTime != ''">
AND DATE_FORMAT(uu.CREATED_TIME,'%Y-%m-%d') BETWEEN #{startTime} AND #{endTime} AND DATE_FORMAT(newuu.CREATED_TIME,'%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
</if> </if>
) t ) user
GROUP BY t.DEPT_ID GROUP BY user.DEPT_ID
</select> </select>
<select id="selectCountGridWorkOrNot" <select id="selectCountGridWorkOrNot"
@ -526,37 +547,6 @@
(ifnull(tab.userTotal,0) - ifnull(tab.partyCount,0)) as registerCount, (ifnull(tab.userTotal,0) - ifnull(tab.partyCount,0)) as registerCount,
ifnull(tab.partyCount,0) as partyCount ifnull(tab.partyCount,0) as partyCount
from from
(
SELECT
ad.id,
ad.`name`,
ad.pid
FROM
esua_epdc_admin.sys_dept ad
WHERE
ad.id IN <include refid="foreachAllDeptIdsShow"></include>
AND ad.del_flag = 0
) tt
left join
(
SELECT
t0.id,
t0.`name` streetName,
count(uu.id) userTotal,
count((HISTORY.AUTHENTICATED_TYPE='1' and HISTORY.AUTHENTICATED_FLAG = '1') or null ) AS partyCount
FROM
esua_epdc_user.epdc_user uu
LEFT JOIN (
SELECT MIN( CREATED_TIME ) AS CREATED_TIME,
USER_ID FROM esua_epdc_user.epdc_user_grid_relation
WHERE
DEL_FLAG = '0'
GROUP BY
USER_ID
) MINRELA
ON MINRELA.USER_ID = uu.ID
LEFT JOIN esua_epdc_user.epdc_user_grid_relation RELATION ON RELATION.USER_ID = MINRELA.USER_ID AND RELATION.DEL_FLAG = '0' AND MINRELA.CREATED_TIME = RELATION.CREATED_TIME
inner JOIN
( (
SELECT SELECT
ad.id, ad.id,
@ -567,40 +557,101 @@
WHERE WHERE
ad.id IN <include refid="foreachAllDeptIdsShow"></include> ad.id IN <include refid="foreachAllDeptIdsShow"></include>
AND ad.del_flag = 0 AND ad.del_flag = 0
) t0 ) tt
ON find_in_set(t0.id, IFNULL(if(uu.ALL_DEPT_IDS = '',null,uu.ALL_DEPT_IDS),RELATION.ALL_DEPT_IDS)) left join
LEFT JOIN ( (
SELECT MAX( CREATED_TIME ) AS CREATED_TIME, USER_ID SELECT
FROM esua_epdc_user.epdc_user_authenticate_history t0.ID as DEPT_ID,
WHERE DEL_FLAG = '0' AND AUTHENTICATED_TYPE IN ( '0', '1' ) COUNT(user.ID) AS userTotal,
<if test="operationEndTime != null and operationEndTime != ''"> COUNT((user.AUTHENTICATED_TYPE = '1' AND user.AUTHENTICATED_FLAG = '1') OR NULL) AS partyCount
AND DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{operationEndTime} FROM (
</if> SELECT
<if test="endTime != ''"> DISTINCT uu.ID,
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime} (
</if> SELECT
GROUP BY USER_ID AUTHENTICATED_TYPE
) MAXHIS ON MAXHIS.USER_ID = uu.ID FROM
esua_epdc_user.epdc_user_authenticate_history
LEFT JOIN esua_epdc_user.epdc_user_authenticate_history HISTORY ON HISTORY.USER_ID = MAXHIS.USER_ID AND HISTORY.CREATED_TIME = MAXHIS.CREATED_TIME AND HISTORY.DEL_FLAG = '0' WHERE
where uu.DEL_FLAG = '0' DEL_FLAG = '0'
AND IFNULL(if(uu.dept_id=0,null,uu.dept_id),RELATION.GRID_ID) IN AND AUTHENTICATED_TYPE IN ( '0', '1' )
<foreach collection="deptIdList" index="index" item="deptId" open="(" separator="," close=")"> <if test="operationEndTime != null and operationEndTime != ''">
#{deptId} and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;=#{operationEndTime}
</foreach> </if>
<if test="operationStartTime != null and operationEndTime != null and operationEndTime != ''"> <if test="endTime != null and endTime != ''">
AND DATE_FORMAT(uu.CREATED_TIME,'%Y-%m-%d') BETWEEN #{operationStartTime} AND #{operationEndTime} and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;=#{endTime}
</if> </if>
<if test="endTime != null and endTime != ''"> AND USER_ID = uu.ID
and DATE_FORMAT(uu.CREATED_TIME,'%Y-%m-%d') &lt;=#{endTime} ORDER BY
</if> CREATED_TIME DESC,
GROUP BY id
t0.id LIMIT 1
ORDER BY ) AS AUTHENTICATED_TYPE,
t0.id ASC) tab (
on tt.id = tab.id SELECT
ORDER BY AUTHENTICATED_FLAG
tt.id ASC FROM
esua_epdc_user.epdc_user_authenticate_history
WHERE
DEL_FLAG = '0'
AND AUTHENTICATED_TYPE IN ( '0', '1' )
<if test="operationEndTime != null and operationEndTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;=#{operationEndTime}
</if>
<if test="endTime != null and endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;=#{endTime}
</if>
AND USER_ID = uu.ID
ORDER BY
CREATED_TIME DESC ,
id
LIMIT 1
) AS AUTHENTICATED_FLAG,
ifnull(if(uu.DEPT_ID = 0, NULL, uu.DEPT_ID), (
SELECT GRID_ID FROM esua_epdc_user.epdc_user_grid_relation
WHERE DEL_FLAG = '0' AND USER_ID = uu.ID
ORDER BY
CREATED_TIME,
id
LIMIT 1
)) AS DEPT_ID,
ifnull(if(uu.ALL_DEPT_IDS = '', NULL, uu.ALL_DEPT_IDS), (
SELECT ALL_DEPT_IDS FROM esua_epdc_user.epdc_user_grid_relation
WHERE DEL_FLAG = '0' AND USER_ID = uu.ID
ORDER BY
CREATED_TIME,
id
LIMIT 1
)) AS ALL_DEPT_IDS
FROM
esua_epdc_user.epdc_user uu
where uu.DEL_FLAG = '0'
<if test="operationStartTime != null and operationEndTime != null and operationEndTime != ''">
AND DATE_FORMAT(uu.CREATED_TIME,'%Y-%m-%d') BETWEEN #{operationStartTime} AND #{operationEndTime}
</if>
<if test="endTime != null and endTime != ''">
and DATE_FORMAT(uu.CREATED_TIME,'%Y-%m-%d') &lt;=#{endTime}
</if>
) user
inner JOIN
(
SELECT
ad.id,
ad.`name`,
ad.pid
FROM
esua_epdc_admin.sys_dept ad
WHERE
ad.id IN <include refid="foreachAllDeptIdsShow"></include>
AND ad.del_flag = 0
) t0 on find_in_set(t0.id, user.ALL_DEPT_IDS)
where user.dept_id IN
<foreach collection="deptIdList" index="index" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
GROUP BY t0.id
) tab on tt.id = tab.DEPT_ID
ORDER BY tt.id ASC
</select> </select>
<select id="selectExportunAuthorizedCount" resultType="com.elink.esua.epdc.dto.user.result.ExportOperationDataResultDTO"> <select id="selectExportunAuthorizedCount" resultType="com.elink.esua.epdc.dto.user.result.ExportOperationDataResultDTO">
@ -954,64 +1005,91 @@
t1.*, t1.*,
t1.oldCount / t1.partyMemberCount oldPercent, t1.oldCount / t1.partyMemberCount oldPercent,
t1.youngCount / t1.partyMemberCount youngPercent t1.youngCount / t1.partyMemberCount youngPercent
FROM ( FROM (
SELECT SELECT
t.streetName, t.streetId, t.streetName, t.streetId,
count( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.SEX = '1') OR NULL ) maleCount, count( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.SEX = '1') OR NULL ) maleCount,
count( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.SEX = '0') OR NULL ) femaleCount, count( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.SEX = '0') OR NULL ) femaleCount,
count( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.SEX = '2') OR NULL ) unknownSexCount, count( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.SEX = '2') OR NULL ) unknownSexCount,
COUNT( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1') OR NULL ) partyMemberCount, COUNT( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1') OR NULL ) partyMemberCount,
count((t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '0' ) or null ) partyAuthFailureCount, count((t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '0' ) or null ) partyAuthFailureCount,
COUNT( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.age > 50) OR NULL ) oldCount, COUNT( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.age > 50) OR NULL ) oldCount,
COUNT( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.age &lt;= 50 AND t.age > 0 ) OR NULL ) youngCount COUNT( (t.AUTHENTICATED_TYPE='1' and t.AUTHENTICATED_FLAG = '1' and t.age &lt;= 50 AND t.age > 0 ) OR NULL )
FROM ( youngCount
FROM (
SELECT
uu.ID AS userId,
CASE WHEN uu.SEX is null or uu.SEX != '0' AND uu.SEX != '1' THEN '2' ELSE uu.SEX END AS SEX,
uu.STATE, uu.PARTY_FLAG, uu.DEPT_ID,
IFNULL( TIMESTAMPDIFF( YEAR, uu.BIRTHDAY, CURDATE()), 0 ) age,
ad2.`name` streetName, ad2.id streetId,
HISTORY.AUTHENTICATED_TYPE,
HISTORY.AUTHENTICATED_FLAG
FROM
esua_epdc_user.epdc_user uu
LEFT JOIN (SELECT MIN( CREATED_TIME ) AS CREATED_TIME, USER_ID FROM esua_epdc_user.epdc_user_grid_relation WHERE DEL_FLAG = '0' GROUP BY USER_ID ) MINRELA ON MINRELA.USER_ID = uu.ID
LEFT JOIN esua_epdc_user.epdc_user_grid_relation RELATION ON RELATION.USER_ID = MINRELA.USER_ID AND RELATION.DEL_FLAG = '0' AND MINRELA.CREATED_TIME = RELATION.CREATED_TIME
LEFT JOIN esua_epdc_admin.sys_dept ad ON IFNULL(if(uu.DEPT_ID = 0,null,uu.DEPT_ID),RELATION.GRID_ID) = ad.ID AND ad.type_key = 'grid_party'
<include refid="joinCommunityStreet"></include>
LEFT JOIN (
SELECT MAX( CREATED_TIME ) AS CREATED_TIME, USER_ID
FROM esua_epdc_user.epdc_user_authenticate_history
WHERE DEL_FLAG = '0' AND AUTHENTICATED_TYPE IN ( '0', '1' )
<if test="endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime}
</if>
GROUP BY USER_ID
) MAXHIS ON MAXHIS.USER_ID = uu.ID
LEFT JOIN esua_epdc_user.epdc_user_authenticate_history HISTORY ON HISTORY.USER_ID = MAXHIS.USER_ID AND HISTORY.CREATED_TIME = MAXHIS.CREATED_TIME AND HISTORY.DEL_FLAG = '0'
select newuu.userId,newuu.SEX,newuu.age,ad2.`name` streetName,
ad2.id streetId,newuu.AUTHENTICATED_TYPE,newuu.AUTHENTICATED_FLAG,newuu.DEPT_ID
from (
SELECT
DISTINCT uu.ID userId,uu.CREATED_TIME,uu.DEL_FLAG,
CASE WHEN uu.SEX is null or uu.SEX != '0' AND uu.SEX != '1' THEN '2' ELSE uu.SEX END AS SEX,
IFNULL( TIMESTAMPDIFF( YEAR, uu.BIRTHDAY, CURDATE()), 0 ) age,
(
SELECT
AUTHENTICATED_TYPE
FROM
epdc_user_authenticate_history
WHERE
DEL_FLAG = '0'
AND AUTHENTICATED_TYPE IN ( '0', '1' )
<if test="endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime}
</if>
AND USER_ID = uu.ID
ORDER BY
CREATED_TIME DESC,
id
LIMIT 1
) AS AUTHENTICATED_TYPE,
(
SELECT
AUTHENTICATED_FLAG
FROM
epdc_user_authenticate_history
WHERE
DEL_FLAG = '0'
AND AUTHENTICATED_TYPE IN ( '0', '1' )
<if test="endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime}
</if>
AND USER_ID = uu.ID
ORDER BY
CREATED_TIME DESC ,
id
LIMIT 1
) AS AUTHENTICATED_FLAG,
ifnull(if(uu.DEPT_ID = 0, NULL, uu.DEPT_ID), (
SELECT GRID_ID FROM epdc_user_grid_relation
WHERE DEL_FLAG = '0' AND USER_ID = uu.ID
ORDER BY
CREATED_TIME,
id
LIMIT 1
)) AS DEPT_ID
FROM
epdc_user uu
) newuu
LEFT JOIN esua_epdc_admin.sys_dept ad ON newuu.DEPT_ID = ad.ID AND ad.type_key = 'grid_party'
<include refid="joinCommunityStreet"></include>
WHERE uu.DEL_FLAG = '0' WHERE newuu.DEL_FLAG = '0'
<choose> <choose>
<when test="gridId != null and gridId != ''">AND ad2.ID = #{gridId}</when> <when test="gridId != null and gridId != ''">AND ad2.ID = #{gridId}</when>
<otherwise> <otherwise>
<if test="deptIdList != null and deptIdList.size() > 0"> <if test="deptIdList != null and deptIdList.size() > 0">
AND ad2.ID in AND ad2.ID in
<foreach collection="deptIdList" item="deptId" open="(" separator="," close=")">#{deptId}</foreach> <foreach collection="deptIdList" item="deptId" open="(" separator="," close=")">#{deptId}</foreach>
</if>
</otherwise>
</choose>
<if test="startTime != null and endTime != null and endTime != ''">
AND DATE_FORMAT(uu.CREATED_TIME,'%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
</if> </if>
AND ad2.id is NOT NULL </otherwise>
AND ad.id IS NOT NULL </choose>
<if test="startTime != null and endTime != null and endTime != ''">
AND DATE_FORMAT(newuu.CREATED_TIME,'%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
</if>
AND ad2.id is NOT NULL
AND ad.id IS NOT NULL
) t GROUP BY t.streetId ) t GROUP BY t.streetId
) t1 ) t1
<choose> <choose>
<when test='category != null and category == "0"'> order by t1.oldCount desc </when> <when test='category != null and category == "0"'> order by t1.oldCount desc </when>
@ -1047,49 +1125,92 @@
COUNT( (t.AUTHENTICATED_TYPE!='1' or t.AUTHENTICATED_FLAG != '1' and t.age &lt;= 50 AND t.age > 0 ) OR NULL ) youngCount COUNT( (t.AUTHENTICATED_TYPE!='1' or t.AUTHENTICATED_FLAG != '1' and t.age &lt;= 50 AND t.age > 0 ) OR NULL ) youngCount
FROM ( FROM (
select
newuu.ID userId,
newuu.AUTHENTICATED_TYPE,
newuu.AUTHENTICATED_FLAG,
newuu.HistoryCount,
newuu.DEPT_ID,
newuu.SEX,
newuu.age,
ad2.`name` streetName,
ad2.id streetId
from
(
SELECT SELECT
uu.ID AS userId, DISTINCT uu.ID,
CASE WHEN uu.SEX is null or uu.SEX != '0' AND uu.SEX != '1' THEN '2' ELSE uu.SEX END AS SEX, uu.DEL_FLAG,
uu.STATE, uu.PARTY_FLAG, uu.DEPT_ID, uu.CREATED_TIME,
IFNULL( TIMESTAMPDIFF( YEAR, uu.BIRTHDAY, CURDATE()), 0 ) age, CASE WHEN uu.SEX is null or uu.SEX != '0' AND uu.SEX != '1' THEN '2' ELSE uu.SEX END AS SEX,
ad2.`name` streetName, ad2.id streetId, IFNULL( TIMESTAMPDIFF( YEAR, uu.BIRTHDAY, CURDATE()), 0 ) age,
HISTORY.AUTHENTICATED_TYPE, (
HISTORY.AUTHENTICATED_FLAG, SELECT
HISCOUNT.HistoryCount AUTHENTICATED_TYPE
FROM FROM
esua_epdc_user.epdc_user uu epdc_user_authenticate_history
LEFT JOIN (SELECT MIN( CREATED_TIME ) AS CREATED_TIME, USER_ID FROM esua_epdc_user.epdc_user_grid_relation WHERE DEL_FLAG = '0' GROUP BY USER_ID ) MINRELA ON MINRELA.USER_ID = uu.ID WHERE
LEFT JOIN esua_epdc_user.epdc_user_grid_relation RELATION ON RELATION.USER_ID = MINRELA.USER_ID AND RELATION.DEL_FLAG = '0' AND MINRELA.CREATED_TIME = RELATION.CREATED_TIME DEL_FLAG = '0'
LEFT JOIN esua_epdc_admin.sys_dept ad ON IFNULL(if(uu.DEPT_ID = 0,null,uu.DEPT_ID),RELATION.GRID_ID) = ad.ID AND ad.type_key = 'grid_party' AND AUTHENTICATED_TYPE IN ( '0', '1' )
<include refid="joinCommunityStreet"></include>
LEFT JOIN (
SELECT MAX( CREATED_TIME ) AS CREATED_TIME, USER_ID
FROM esua_epdc_user.epdc_user_authenticate_history
WHERE DEL_FLAG = '0' AND AUTHENTICATED_TYPE IN ( '0', '1' )
<if test="endTime != ''"> <if test="endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime} and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime}
</if> </if>
GROUP BY USER_ID AND USER_ID = uu.ID
) MAXHIS ON MAXHIS.USER_ID = uu.ID ORDER BY
CREATED_TIME DESC,
LEFT JOIN esua_epdc_user.epdc_user_authenticate_history HISTORY ON HISTORY.USER_ID = MAXHIS.USER_ID AND HISTORY.CREATED_TIME = MAXHIS.CREATED_TIME AND HISTORY.DEL_FLAG = '0' id
LEFT JOIN ( LIMIT 1
) AS AUTHENTICATED_TYPE,
(
SELECT SELECT
count(id) AS HistoryCount, AUTHENTICATED_FLAG
USER_ID
FROM FROM
esua_epdc_user.epdc_user_authenticate_history epdc_user_authenticate_history
WHERE WHERE
DEL_FLAG = '0' DEL_FLAG = '0'
AND AUTHENTICATED_TYPE IN ( '0', '1' ) AND AUTHENTICATED_TYPE IN ( '0', '1' )
AND AUTHENTICATED_FLAG= '1'
<if test="endTime != ''"> <if test="endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime} and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime}
</if> </if>
GROUP BY USER_ID AND USER_ID = uu.ID
) HISCOUNT ON HISCOUNT.USER_ID = uu.ID ORDER BY
WHERE uu.DEL_FLAG = '0' CREATED_TIME DESC ,
id
LIMIT 1
) AS AUTHENTICATED_FLAG,
(
SELECT
count( id ) AS HistoryCount
FROM
epdc_user_authenticate_history
WHERE
DEL_FLAG = '0'
AND AUTHENTICATED_TYPE IN ( '0', '1' )
AND AUTHENTICATED_FLAG = '1'
<if test="endTime != ''">
and DATE_FORMAT(CREATED_TIME,'%Y-%m-%d') &lt;= #{endTime}
</if>
AND USER_ID = uu.ID
) AS HistoryCount,
ifnull(if(uu.DEPT_ID = 0, NULL, uu.DEPT_ID), (
SELECT GRID_ID FROM epdc_user_grid_relation
WHERE DEL_FLAG = '0' AND USER_ID = uu.ID
ORDER BY
CREATED_TIME,
id
LIMIT 1
)) AS DEPT_ID
FROM
epdc_user uu
) newuu
LEFT JOIN esua_epdc_admin.sys_dept ad ON newuu.DEPT_ID = ad.ID AND ad.type_key = 'grid_party'
<include refid="joinCommunityStreet"></include>
where
newuu.DEL_FLAG = '0'
<if test="startTime != null and endTime != null and endTime != ''">
AND DATE_FORMAT(newuu.CREATED_TIME,'%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
</if>
AND ad2.id is NOT NULL
AND ad.id IS NOT NULL
<choose> <choose>
<when test="gridId != null and gridId != ''">AND ad2.ID = #{gridId}</when> <when test="gridId != null and gridId != ''">AND ad2.ID = #{gridId}</when>
<otherwise> <otherwise>
@ -1099,12 +1220,6 @@
</if> </if>
</otherwise> </otherwise>
</choose> </choose>
<if test="startTime != null and endTime != null and endTime != ''">
AND DATE_FORMAT(uu.CREATED_TIME,'%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
</if>
AND ad2.id is NOT NULL
AND ad.id IS NOT NULL
) t GROUP BY t.streetId ) t GROUP BY t.streetId
) t1 ) t1

Loading…
Cancel
Save