首页统计柱状图
SELECT
count( userPhone ) AS userCount,
organizationId,organizationName
FROM
(
SELECT
a.userPhone,
a.organizationId,
o.organizationName,
hr.questionnaireId
FROM
(
SELECT
userPhone,
organizationId
FROM
(
SELECT
userPhone,
organizationId
FROM
user_info UNION
SELECT
userPhone,
organizationId
FROM
user_info_sub_workers UNION
SELECT
userPhone,
organizationId
FROM
user_info_own_workers
) ui
WHERE
ui.organizationId IN ( SELECT organizationId FROM organization WHERE parentId = 795)
) a
LEFT JOIN organization o ON a.organizationId = o.organizationId
LEFT JOIN (
SELECT max( healthRecordId ) AS healthRecordId,phone, name, MAX(createTime), expiredTime,organizationId,questionnaireId
FROM health_record
WHERE 1=1
AND organizationId IN ( SELECT organizationId FROM organization WHERE parentId = 795)
-- and expiredTime > CURRENT_TIMESTAMP ()
GROUP BY
phone
) hr ON a.userPhone = hr.phone
WHERE
hr.healthRecordId IS NOT NULL
) b
GROUP BY organizationId
、、、
SELECT 0 AS writeCount, a.organizationName, a.questionnaireName, concat( a.organizationId, '-', a.questionnaireId ) AS id, CASE WHEN b.userCount IS NULL THEN 0 ELSE b.userCount END AS unWriteCount FROM (SELECT qc.organizationId,o.organizationName,hq.questionnaireId,hq.questionnaireName FROM ( SELECT * FROM questionnaire_config WHERE organizationId IN ( SELECT organizationId FROM organization WHERE parentId = 795 ) ) qc LEFT JOIN health_questionnaire hq ON qc.questionnaireId = hq.questionnaireId LEFT JOIN organization o ON qc.organizationId = o.organizationId ) a LEFT JOIN ( SELECT count( DISTINCT userPhone ) AS userCount, ui.organizationId FROM( SELECT userPhone, organizationId FROM user_info UNION SELECT userPhone, organizationId FROM user_info_sub_workers UNION SELECT userPhone, organizationId FROM user_info_own_workers ) ui WHERE ui.organizationId IN ( SELECT organizationId FROM organization WHERE parentId = 795 ) GROUP BY ui.organizationId ) b ON a.organizationId = b.organizationId
再有
SELECT * FROM health_record where phone='18883128818'
SELECT * FROM health_record where questionnaireId=817 order by createTime DESC
SELECT userPhone, organizationId
FROM user_info where userPhone in
(
SELECT phone
FROM health_record
WHERE healthRecordId IS NOT NULL
AND organizationId IN ( SELECT organizationId FROM organization WHERE parentId = 795)
GROUP BY phone
) -- AND organizationId=796
SELECT count( userPhone ) AS userCount, organizationId FROM ( SELECT a.userPhone, a.organizationId, hr.questionnaireId FROM ( SELECT userPhone, organizationId FROM ( SELECT userPhone, organizationId FROM user_info ) ui WHERE ui.organizationId IN ( SELECT organizationId FROM organization WHERE parentId = 795) ) a LEFT JOIN ( SELECT max( healthRecordId ) AS healthRecordId,phone, name, MAX(createTime), expiredTime,organizationId,questionnaireId FROM health_record WHERE 1=1 AND organizationId IN ( SELECT organizationId FROM organization WHERE parentId = 795) -- and expiredTime > CURRENT_TIMESTAMP () GROUP BY phone ) hr ON a.userPhone = hr.phone LEFT JOIN health_questionnaire hq ON hr.questionnaireId = hq.questionnaireId WHERE hr.healthRecordId IS NOT NULL AND hq.organizationId = 795 ) b GROUP BY organizationId
mybaits:
<select id="getWriteStatByOrganizationIdStatistics" resultType="net.sf.json.JSONObject"> SELECT count(userPhone) AS writeCount, b.organizationId, c.allcount-count(userPhone) as unWriteCount, organizationName FROM ( SELECT a.userPhone, a.organizationId, o.organizationName, hr.questionnaireId FROM ( SELECT userPhone, organizationId FROM ( <if test="workType!=null and workType =='all'"> SELECT userPhone, organizationId FROM user_info UNION SELECT userPhone, organizationId FROM user_info_sub_workers UNION SELECT userPhone, organizationId FROM user_info_own_workers </if> <if test="workType!=null and workType =='own'"> SELECT userPhone, organizationId FROM user_info_own_workers </if> <if test="workType!=null and workType =='sub'"> SELECT userPhone, organizationId FROM user_info_sub_workers </if> <if test="workType!=null and workType =='cus'"> SELECT userPhone, organizationId FROM user_info </if> ) ui WHERE <if test="node ==3"> ui.organizationId IN ( SELECT organizationId FROM organization WHERE parentId = #{organizationId} ) </if> <if test="node ==4"> ui.organizationId = #{organizationId} </if> ) a LEFT JOIN organization o ON a.organizationId = o.organizationId LEFT JOIN ( SELECT max(healthRecordId) AS healthRecordId, phone, name, MAX(createTime), expiredTime, organizationId, questionnaireId FROM health_record WHERE 1 = 1 AND <if test="node ==3"> organizationId IN ( SELECT organizationId FROM organization WHERE parentId = #{organizationId} ) </if> <if test="node ==4"> organizationId = #{organizationId} </if> -- and expiredTime > CURRENT_TIMESTAMP () GROUP BY phone ) hr ON a.userPhone = hr.phone WHERE hr.healthRecordId IS NOT NULL ) b LEFT JOIN ( SELECT COUNT(userPhone) as allcount, ui2.organizationId FROM ( <if test="workType!=null and workType =='all'"> SELECT userPhone, organizationId FROM user_info UNION SELECT userPhone, organizationId FROM user_info_sub_workers UNION SELECT userPhone, organizationId FROM user_info_own_workers </if> <if test="workType!=null and workType =='own'"> SELECT userPhone, organizationId FROM user_info_own_workers </if> <if test="workType!=null and workType =='sub'"> SELECT userPhone, organizationId FROM user_info_sub_workers </if> <if test="workType!=null and workType =='cus'"> SELECT userPhone, organizationId FROM user_info </if> ) ui2 WHERE <if test="node ==3"> ui2.organizationId IN ( SELECT organizationId FROM organization WHERE parentId = #{organizationId} ) </if> <if test="node ==4"> ui2.organizationId = #{organizationId} </if> ) c ON c.organizationId = b.organizationId GROUP BY organizationId </select>