如何在SQL中统计New_table表中去重后的患者ID总数
问题梳理
现有数据表New_table,包含subj、pred、obj三个字段:
pred为字符串类型属性标识,当取值为Patient时,同行obj字段存储内容为患者ID- 其余
pred取值对应obj存储其他属性内容
表样例数据如下:
| subj | pred | obj |
|---|---|---|
| Subject1 | Patient | 11452 |
| Subject1 | institute | BWE |
| Subject1 | Patient | 11462 |
需求为统计全表不重复的患者ID总数量,原有SQL存在两处错误:
- 未添加筛选逻辑,非患者ID的记录被纳入统计范围
- 去重计数字段错误,统计的是
pred字段的去重值,而非存储患者ID的obj字段
正确实现方案
通过WHERE子句先筛选pred值为Patient的记录,再对obj字段的患者ID做去重计数,SQL语句如下:
SELECT COUNT(DISTINCT obj) AS number FROM New_table WHERE pred = 'Patient';
逻辑说明
WHERE pred = 'Patient':过滤所有非患者ID的记录,仅保留有效患者ID行COUNT(DISTINCT obj):对筛选后的obj列去重后计数,避免重复患者ID导致统计结果失真- 基于给出的样例数据执行该语句,返回结果为
2,与实际不重复患者ID数量匹配。
内容的提问来源于stack exchange,提问作者Jan
相关产品推荐
相关产品推荐

