SQL统计Top5结果关联患者数结果不一致原因咨询
统计结果偏差的核心原因
- 子查询未限定Top5范围:你写的子查询
SELECT code FROM [DAassessment].[dbo].[valid_cpt_codes]会返回该表下所有CPT编码,完全没有筛选你提取的Top5结果,统计范围远大于目标范围,结果必然偏大。 - 未做患者去重计算:
COUNT(patient_id)统计的是匹配到的记录总行数,不是独立患者数。如果同一个患者有多条关联Top5诊疗项目的结算记录,会被重复计数,结果会比实际患者数高。 - 未处理异常值干扰:如果两张表关联的编码字段存在空值、重复值,会出现无效匹配:比如
procedure_code为空的记录会被错误纳入统计,子查询返回重复编码也会导致匹配逻辑异常,进一步拉高统计误差。
修正参考逻辑
首先要在子查询里明确写入你提取Top5编码的筛选规则,同时对患者ID做去重计数,参考代码如下:
SELECT COUNT(DISTINCT patient_id) as Patient_count FROM [DAassessment].[dbo].[sample_claims] WHERE procedure_code IN ( -- 此处替换为你实际获取Top5编码的查询逻辑,以下为示例:按项目出现频次排序取前5 SELECT TOP 5 code FROM [DAassessment].[dbo].[valid_cpt_codes] -- 如果你已经在valid_cpt_codes表里标记了Top5,可直接加筛选条件,例如 WHERE is_top5_flag = 1 ORDER BY code_frequency DESC )
内容的提问来源于stack exchange,提问作者dasola salami
相关产品推荐
相关产品推荐

