上一篇写到case when then用法,这里写一下实际中的应用
1.表 B_PATIENT_INFO 患者基本信息表包括性别(M 男 F 女 ),允许为空 2161条记录
表M_CENTER 院区信息表
2.根据图可知:
2.1 院区表M_CENTER.id 对应 患者信息表 B_PATIENT_INFO.CenterID
3. 根据院区分组,计算每个院区患者总数
SELECT
mc.Name,
COUNT (*) 总人数
FROM
B_PATIENT_INFO bpi
LEFT JOIN M_CENTER mc ON mc.Id = bpi.CenterID
GROUP BY
mc.Name
4.根据院区分组,计算每个院区患者中男性,女性,没填性别人数及总人数
SELECT
mc.Name as 院区,
SUM(CASE bpi.Sex WHEN 'M' THEN 1 else 0 end) as 男,
SUM(case bpi.Sex WHEN 'F' THEN 1 else 0 end) as 女,
COUNT (*) 总人数
FROM
B_PATIENT_INFO bpi
LEFT JOIN M_CENTER mc ON mc.Id = bpi.CenterID
GROUP BY
mc.Name
order by 总人数