如何使用SQL统计患有疾病A或B的唯一患者ID去重后总数量
患者疾病去重统计实现方案
核心需求确认
- 待统计表包含4个字段:
ID_patients(患者ID)、Code、title/name of disease(疾病名称)、value - 统计目标:患有疾病A或B的唯一患者总数量,同一患者同时确诊A、B两种疾病仅计数1次
可直接运行的SQL实现
使用COUNT(DISTINCT)语法即可一步完成去重统计,无需复杂子查询:
SELECT COUNT(DISTINCT ID_patients) AS 符合条件的唯一患者总数 FROM 替换为你的实际表名 WHERE `title/name of disease` IN ('A', 'B');
逻辑说明
WHERE子句先筛选出所有疾病为A或B的记录,缩小统计范围COUNT(DISTINCT ID_patients)会对筛选出的记录中的患者ID自动去重,即使同一患者同时存在A、B两条确诊记录,也只会被统计1次,完全匹配需求- 如果你是通过
Code字段判断疾病类型,把WHERE子句中的字段替换为Code、对应值调整为A、B的编码即可
常见错误原因说明
之前统计结果不符合预期,大概率是这两种情况:
- 仅使用
COUNT(ID_patients)不加DISTINCT,会统计所有符合条件的记录数,重复计数同时患两种病的患者 - 加入了按疾病名称/患者ID的
GROUP BY分组逻辑,会返回分维度的统计值,无法直接得到总去重人数
内容的提问来源于stack exchange,提问作者CRG
相关产品推荐
相关产品推荐

