首页统计柱状图

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>

  

 

posted @ 2022-07-01 08:48  hogeisok  阅读(38)  评论(0)    收藏  举报