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

统计未接受手术出院患者的SQL平均体温计算异常求助

问题根因

你编写的SQL核心问题是observation表缺失和其他业务表的关联条件,导致多表连接时产生笛卡尔积:所有符合observ_type = 'Temp'的体温观测记录,会和每一条筛选出来的患者入院记录做全量匹配,最终计算的AVG(observ_value)实际是全库所有体温观测数据的平均值,因此所有患者的平均体温完全一致。

修复方案

需要补充observation表和入院表的关联逻辑,通常observation表会存储关联的入院ID字段,用来对应单次住院的观测数据,关联后就会只统计患者本次住院期间的体温平均值。同时可以将原SQL的隐式连接改为显式JOIN提升可读性,嵌套的CONCAT也可以简化为多参数写法:

SELECT
    patient_id AS "患者ID",
    CONCAT(first_name,' ',surname) AS "患者姓名",
    admission_date AS "入院日期",
    discharge_date AS "出院日期",
    ROUND(AVG(observ_value),2) AS "平均体温",
    daily_charge AS "住院费用"
FROM person
INNER JOIN admission ON person.person_id = admission.patient_id 
INNER JOIN ward ON ward.ward_code = admission.ward_code
-- 新增观测表和入院表的关联条件,确保仅统计本次住院的体温数据
INNER JOIN observation ON observation.admission_id = admission.admission_id
WHERE admission.admission_id NOT IN (SELECT operation.admission_id FROM operation)
  AND observation.observ_type = 'Temp' 
  AND admission.discharge_date IS NOT NULL 
GROUP BY patient_id, admission_date, discharge_date, daily_charge, first_name, surname
ORDER BY admission_date

如果你的observation表没有存储关联入院ID,只有患者ID字段,可以将关联条件替换为observation.patient_id = person.person_id,但该写法在患者有多次住院记录时,可能会把其他住院时段的体温也纳入统计,优先使用入院ID关联更符合当前业务需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:06:01