sql-server 如何在sql中根据计数结果计算平均值

sg24os4d  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(179)

我有以下表格:
访视:vid、pid、日期
患者:pid、pname、年龄、性别
所以我想知道每个病人的平均就诊次数。我已经很努力地想解决这个问题了,但是仍然不能解决!希望有人能帮助我。

vwkv1x7d

vwkv1x7d1#

您可以通过计算访视总数并除以患者总数来完成此操作。

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

请注意以下事项:

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

编辑:
您没有足够的信息来计算给定时间单位的平均值。虽然您有就诊日期,但没有患者的日期,因此您不知道在任何给定时间点的总体情况。

jchrr9hc

jchrr9hc2#

无法计算每位患者的平均就诊次数。任何单个患者的总就诊次数只有一个标量值。您无法计算其平均值。您可以计算所有患者的平均就诊次数,或每位患者每月的平均就诊次数,但如果一组值中只有一个值,则无法计算该组值的平均值。(或者,为了技术上的准确性,您可以对单个值求平均值,但平均值与值相同,因为计数为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

相关问题