大家好!我是夏小花,今天是
2024年1月13日|腊月初三
需求是:最外层的查询语句里面包含四个不相同表的查询,根据月份进行关联查询,每个查询语句中的where条件
可以自行去定义,最后返回数量和月份
语法:
select a.月份,a.总数一,b.总数二,c.总数三,d.总数四
from (
SELECT
CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0')) AS Month,
COUNT(DISTINCT m.id) AS 总数一
FROM persion m
JOIN zs_yi br ON m.id = br.p.id
WHERE
YEAR(br.measuring_time) = 2023 AND (
(br.dbpval > m.dbpval_max OR br.dbpval < m.dbpval_min) OR
(br.sbpval > m.sbpval_max OR br.sbpval < m.sbpval_min)
)
GROUP BY CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0'))
) a left join
(
SELECT
CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0')) AS Month,
COUNT(DISTINCT m.id) AS xtCount
FROM pserion m
JOIN zs_er br ON m.id = br.p_id
WHERE
YEAR(br.measuring_time) = 2023 AND (
(br.gluval > m.sugar_max OR br.gluval < m.sugar_min)
)
GROUP BY CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0'))
) b on a.月份 = b.月份 left join
(
SELECT
CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0')) AS Month,
COUNT(DISTINCT m.id) AS xzCount
FROM pserion m
JOIN zs_san br ON m.id = br.p_id
WHERE
YEAR(br.measuring_time) = 2023 AND (
(br.total_cholesterol > m.blood_max OR br.total_cholesterol < m.blood_min)
)
GROUP BY CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0'))
) c on a.月份 = c.月份 left join
(
SELECT
CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0')) AS Month,
COUNT(DISTINCT m.id) AS tzCount
FROM persion m
JOIN zs_si br ON m.id = br.p_id
WHERE
YEAR(br.measuring_time) = 2023 AND (
(br.bmi > m.bodyfat_max OR br.bmi < m.bodyfat_min)
)
GROUP BY CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0'))
) d on a.月份 = d.月份
order by a.月份 asc