我需要找到不同访问时间点(时间点)患者体重之间的平均值差异,但我很难找到“配对”平均值:
我有1个表(PHYS),其中包含不同访问时的患者体重:
PATIENT VISIT WEIGHT
1 Baseline 200
1 1 Month 190
1 2 Month 170
2 Baseline 300
2 1 Month 290
2 2 Month 280
3 Baseline 250
3 1 Month 230
我的问题是我只想找到配对数据的区别。例如,在计算2个月和基线访问之间的体重减轻量时,我想找到(平均2个月体重)和(仅2个月体重的患者的平均基线体重)之间的差异。在这个例子中,结果应该是AVG(170,280) - AVG(200,300)= -25(因为只有患者1和2有2个月的权重)。
这是我所拥有的,但它根据所有权重计算差异:
SELECT VISIT
AVG(WEIGHT)
-
(SELECT
AVG(WEIGHT)
FROM PHYS
WHERE VISIT = 'BASELINE')
FROM PHYS
GROUP BY VISIT
我想要的输出是(我知道我需要添加ORDER BY
):
VISIT CHANGE FROM BASELINE
Baseline 0
1 Month -13.3
2 Month -25
谢谢你,对不起这个新问题。
答案 0 :(得分:0)
您可以使用join
对同一个表执行此操作,但仅适用于'Baseline'
。然后,聚合仅聚合匹配的值,因此您应该获得三个组的不同基线平均值(因为群体不同):
select p.visit, avg(p.weight) as avg_weight, avg(pbl.weight) as avg_blweight,
(avg(p.weight) - avg(pbl.weight)) as change
from phys p join
phys pbl
on p.patient = pbl.patient and
pbl.visit = 'Baseline'
group by p.visit;