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

求SQL查询语句:统计同时患有depression和anxiety的患者数

统计同时患有抑郁和焦虑的患者总数的SQL方案

这里提供几种实用的SQL写法,可根据你的数据库类型和表数据特点选择:

方法1:GROUP BY + HAVING筛选(通用型)

这是最常用的方案,适用于所有主流数据库:

SELECT COUNT(DISTINCT patient_id) AS total_patients
FROM your_table_name
WHERE diagnosis_description IN ('depression', 'anxiety')
GROUP BY patient_id
HAVING COUNT(DISTINCT diagnosis_description) = 2;
  • 逻辑:先筛选出诊断为抑郁或焦虑的记录,按患者ID分组后,只保留同时拥有两种诊断的分组,最后统计这些患者的数量。
  • 优化点:如果你的表中同一患者不会重复出现同一种诊断,可以把COUNT(DISTINCT diagnosis_description)改成COUNT(*) = 2,提升查询效率。

方法2:自连接查询

通过表自关联匹配同时存在两种诊断的患者:

SELECT COUNT(DISTINCT a.patient_id) AS total_patients
FROM your_table_name a
JOIN your_table_name b 
  ON a.patient_id = b.patient_id
WHERE a.diagnosis_description = 'depression'
  AND b.diagnosis_description = 'anxiety';
  • 逻辑:将表与自身连接,匹配出同一个患者同时有抑郁和焦虑诊断的记录,最后去重统计患者总数。

方法3:使用INTERSECT(适用于PostgreSQL、SQL Server等)

利用交集操作直接获取同时满足两种诊断的患者:

SELECT COUNT(*) AS total_patients
FROM (
    SELECT patient_id
    FROM your_table_name
    WHERE diagnosis_description = 'depression'
    INTERSECT
    SELECT patient_id
    FROM your_table_name
    WHERE diagnosis_description = 'anxiety'
) AS combined_patients;
  • 逻辑:分别查询出有抑郁诊断、有焦虑诊断的患者列表,取两者的交集,最后统计交集中的患者数量。

注意事项

请将上述SQL中的your_table_name替换为你实际使用的表名。用你提供的示例数据测试时,三种方法都会返回结果1,符合预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:16:16