如何从sql中的计数结果计算平均值

时间:2014-05-15 01:31:26

标签: sql sql-server

我有以下表格:

VISITS: VID, PID, 日期

PATIENT: PID, PNAME, 年龄, 性别

所以我想知道每位患者的平均就诊次数。 我试图如此努力地解决它,但仍然无法完成它! 希望有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

每位患者的平均就诊次数是不可能的。对于任何单个患者,总访问次数只有一个标量值。你无法平均。您可以平均所有患者的就诊次数或每位患者每月的就诊次数,但如果该组中只有一个值,则无法平均一组值。 (或者在技术上准确,您可以平均单个值,但平均值与该值相同,因为计数为1。)

所有患者的平均就诊次数=   访问总数/患者人数

Select Avg(Count(*))
From Visits
Group By pid

每位患者每月平均就诊次数

Select p.pid, p.pname, 
   Avg(z.monthVisits) AvgMonthlyVisits
From (Select Pid, Count(*) monthVisits
      From table
      Group By Pid, Month(date)) z
   join Patient p
       on p.pid = z.pid
Group By p.pid

答案 1 :(得分:0)

您可以通过计算总就诊次数并除以患者总数来实现此目的。

select (select count(*) from visits) / (select 1.0*count(*) from patients) as AvgVisitsPerPatient

请注意以下事项:

  • 需要1.0*才能将计数更改为小数。 SQL Server对整数进行整数除法。
  • 使用patients表。有些患者可能没有任何就诊,并且包括在内。
  • select中使用嵌套子查询。这是允许的。

编辑:

您没有足够的信息来计算给定时间单位的平均值。虽然您有访问日期,但您没有患者的日期,因此您不知道在任何给定时间点人口是谁。