为何含IN子句的BigQuery FDA数据查询与无方子句查询结果有差异?
两个查询结果差异的原因
核心问题出在子查询的统计逻辑和第一个查询完全不同,具体拆解如下:
第一个查询的逻辑
直接筛选出所有包含住院记录(outcomes LIKE '%Hospitalization%')的事件,按products_industry_name分组后,统计每个行业的住院事件报告数,最后取住院事件数量最多的前10个行业。这里的排序和Top10筛选,完全基于住院事件的数量。
第二个查询的逻辑
子查询先统计了**所有事件(无论是否涉及住院)**的行业报告总数,取全量事件数最多的前10个行业。外层查询仅针对这10个行业,筛选其中包含住院记录的事件,再统计住院事件数量。
关键差异点
- 子查询的
ORDER BY COUNT(report_number)统计的是行业的全部事件数,而非住院事件数。这导致子查询选出的10个行业是全平台事件量最大的,而非住院事件最多的。 - 第一个查询的Top10是住院事件最多的行业,第二个查询的候选行业是全量事件最多的行业,两者的入选范围有重叠但不完全一致。比如:某个行业全量事件多但住院事件占比低,会进入第二个查询的候选;某个行业全量事件少但住院事件占比高,会进入第一个查询的Top10,但可能没进第二个子查询的Top10。
- 重叠的行业统计住院事件数量是一致的(所以前几行结果匹配),但后续行因入选行业不同,结果自然出现差异。
内容的提问来源于stack exchange,提问作者jopatsky
相关产品推荐
相关产品推荐

