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

统计各病症组合的患者数量(Excel/SQL实现咨询)

病症组合患者数统计实现方案(Excel/SQL)

Excel 实现步骤

1. 生成每个患者的唯一病症组合

在空白列(如C2)输入以下公式,下拉应用到所有行:

=TEXTJOIN("",TRUE,SORT(UNIQUE(FILTER(B:B,A:A=A2))))
  • 逻辑解析:
    • FILTER(B:B,A:A=A2):提取当前患者的所有病症记录
    • UNIQUE:去除同一患者的重复病症
    • SORT:按字母排序,确保无序组合格式统一(如CA自动转为AC)
    • TEXTJOIN:将排序后的病症拼接成字符串组合

2. 生成患者-组合的唯一映射并统计

  1. 复制A列(PatientID)和C列(组合)到新工作表,选择「数据」→「删除重复值」,仅保留PatientID的唯一行,得到每个患者对应的唯一组合。
  2. 在新表的空白列(如D2)输入统计公式,下拉应用:
=COUNTIF(C:C,C2)

即可得到每种组合对应的患者数量。


SQL 实现方案

方案1:直接分组拼接(推荐,适用于主流数据库)

通过分组聚合生成每个患者的有序病症组合,再统计组合的出现次数,无需提前生成所有31种组合。

MySQL 8.0+ 示例

SELECT
  GROUP_CONCAT(DISTINCT `Condition` ORDER BY `Condition` SEPARATOR '') AS condition_combination,
  COUNT(DISTINCT PatientID) AS patient_count
FROM your_table
GROUP BY PatientID
ORDER BY patient_count DESC;

SQL Server 2017+ 示例

WITH patient_combinations AS (
  SELECT
    PatientID,
    STRING_AGG(DISTINCT `Condition`, '') WITHIN GROUP (ORDER BY `Condition`) AS condition_combination
  FROM your_table
  GROUP BY PatientID
)
SELECT
  condition_combination,
  COUNT(PatientID) AS patient_count
FROM patient_combinations
GROUP BY condition_combination
ORDER BY patient_count DESC;

PostgreSQL 示例

WITH patient_combinations AS (
  SELECT
    PatientID,
    STRING_AGG(DISTINCT "Condition", '' ORDER BY "Condition") AS condition_combination
  FROM your_table
  GROUP BY PatientID
)
SELECT
  condition_combination,
  COUNT(PatientID) AS patient_count
FROM patient_combinations
GROUP BY condition_combination
ORDER BY patient_count DESC;

方案2:预生成所有组合再匹配(适合旧版数据库)

如果数据库不支持字符串聚合函数,可先手动生成31种病症组合存入临时表,再关联统计:

  1. 创建组合表condition_combinations,插入所有31种有序组合(如A、B、C、AB、AC...ABCDE)
  2. 执行统计查询:
SELECT
  cc.combination,
  COUNT(DISTINCT pt.PatientID) AS patient_count
FROM condition_combinations cc
LEFT JOIN (
  SELECT
    PatientID,
    GROUP_CONCAT(DISTINCT `Condition` ORDER BY `Condition` SEPARATOR '') AS patient_comb
  FROM your_table
  GROUP BY PatientID
) pt ON cc.combination = pt.patient_comb
GROUP BY cc.combination
ORDER BY patient_count DESC;
  • 该方案会列出所有31种组合,包含无患者的组合(显示0),可通过WHERE patient_count > 0过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:36:28