AVG给出一个计数而不是平均值

时间:2017-06-30 22:20:04

标签: sql-server group-by

这可能是我最后的一个愚蠢的错误,但我无法在我的身上弄明白。 我试图计算从以下列方式呈现的子查询中提取的一组数据的平均值:

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

现在,为'TotalPDMPs'计算的每个'DefaultClinicID'的平均值与上面的数据相同。 这是我计算平均值的查询:

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

有人可以告诉我这里我做错了吗?

感谢。

2 个答案:

答案 0 :(得分:0)

group by列是相同的,因此它通过DefaultClinicID获取内部查询中的计数,然后尝试获取相同DefaultClinicID的平均值。

这有意义吗?当您按相同的事物分组时,该列上的任何聚合都将返回相同的内容。因此,对于诊所23,平均计算将是:134/1 = 134.

我认为你只需要在你的内部查询中做平均值,你得到你想要的。或者avg(不同的p.patientID)就是你所追求的?

答案 1 :(得分:0)

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