2017-06-30 42 views
0

这可能是我的一个愚蠢的错误,但我不能完全弄清楚我的情况。 我试图通过一组从下面的方式呈现一个子查询拉数据来计算平均:AVG给出一个计数而不是平均值

TotalPDMPs DefaultClinicID 
     13996  -1 
     134   23 
     432   29 
     123   26 
     39   27 
     13   21 
     40   24 
     46   30 
     1   25 

现在平均每个“DefaultClinicID”为“TotalPDMPs”计算是一样的上面的数据。 这里是我的计算平均查询:

select DefaultClinicID as ClinicID, AVG(TotalPDMPs) 
from 
(select count(p.PatientID) as TotalPDMPs, DefaultClinicID from PatientPrescriptionRegistry ppr, Patient p 
where p.PatientID = ppr.PatientID 
and p.NetworkID = 2 
    group by DefaultClinicID) p 
group by DefaultClinicID 

可有人告诉我,我做错了什么吗?

谢谢。

+0

预期结果是什么? – AvielNiego

+0

你的内部'select'将为每个'DefaultClinicID'返回一个记录你如何期待在外部查询中每个'DefaultClinicID'的不同平均值 –

回答

0

按列分组是相同的,所以它通过DefaultClinicID获取内部查询中的计数,然后尝试获取相同DefaultClinicID的平均值。

这有道理吗?当你用同样的东西分组时,该列上的任何聚合都会返回相同的结果。因此,对于诊所23的平均计算将是:134/1 = 134.

我认为你只需要在你的内部查询中做平均值,并得到你想要的。或者,也许平均(不同的p.patientID)是你在做什么?

+0

它是有道理的。我试图在每个诊所的整个行上获得'TotalPDMPs'的平均值。我如何修改我的查询来实现此目的? –

+0

这是一个棘手的问题,因为我不知道数据的性质。 PatientPescriptionRegistry中的同一患者是否多次出现?你想更详细地回答什么问题?每个诊所的平均患者人数似乎对这些数据没有任何意义。每个诊所的不同数量的患者可能是有意义的。不同访问的百分比是合理的。每个诊所的患者百分比也可能有所帮助。诊所每天的平均病人数量是合理的。 – Jesse

0

在已经按DefaultClinicID分组的内部子查询中, 因此,每个唯一的DefaultClinicID已经只有一行。 x的平均值是x。

相关问题