You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL多字段分组多计数统计:基于现有查询结果实现需求

Oracle SQL: 多字段分组结合COUNT统计记录数

根据你的表数据和统计需求,我整理了几个常见的统计场景及对应的SQL实现,你可以根据实际业务需求选择使用:

场景1:按患者(NUM_MALADE)维度汇总统计

如果想了解每个患者关联的不同医生数量、涉及的专科数量,以及总的就诊记录数,用这个查询:

SELECT
    NUM_MALADE,
    COUNT(DISTINCT NUM_MED) AS total_unique_doctors,
    COUNT(DISTINCT SPECIALITE) AS total_unique_specialties,
    COUNT(*) AS total_visits
FROM PATIENT_MED_SPEC
GROUP BY NUM_MALADE
ORDER BY NUM_MALADE;

这个查询会返回每个患者的:

  • 关联的不同医生数量(去重统计)
  • 涉及的不同专科数量(去重统计)
  • 总的就诊记录条数(包含同一医生/专科的重复记录)

场景2:按专科(SPECIALITE)维度汇总统计

如果要统计每个专科的患者覆盖量、医生数量及业务记录总数,用这个查询:

SELECT
    SPECIALITE,
    COUNT(DISTINCT NUM_MALADE) AS total_unique_patients,
    COUNT(DISTINCT NUM_MED) AS total_unique_doctors,
    COUNT(*) AS total_records
FROM PATIENT_MED_SPEC
GROUP BY SPECIALITE
ORDER BY SPECIALITE;

这个分组能帮你清晰掌握各专科的患者规模、医生配置和业务量。

场景3:按患者+专科的组合维度统计

如果需要更细粒度的统计,比如每个患者在某专科的就诊次数、接触过的医生数量,用这个查询:

SELECT
    NUM_MALADE,
    SPECIALITE,
    COUNT(DISTINCT NUM_MED) AS doctors_in_specialty,
    COUNT(*) AS visits_in_specialty
FROM PATIENT_MED_SPEC
GROUP BY NUM_MALADE, SPECIALITE
ORDER BY NUM_MALADE, SPECIALITE;

关键说明

  • COUNT(*):统计分组内的所有记录,包含重复条目;
  • COUNT(DISTINCT 字段):统计该字段在分组内的唯一值数量,适合去重统计;
  • Oracle要求GROUP BY后的字段必须与SELECT中非聚合函数的字段完全对应,否则会触发语法错误。

内容的提问来源于stack exchange,提问作者Boussadjra Brahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:16:34