Access中按天计算的平均值

时间:2012-03-08 20:34:32

标签: ms-access count distinct average

我正试图从Access 2010数据库中获得每天平均不同的计数,而我所做的一切似乎都无法正常工作。我尝试过使用子查询,但我无法弄清楚如何将其链接到主要查询。每个办公室访问的表都有一行,如下所示:

    patient_id, visit_year, visit_date, dow, doctor_id
    12345, 2012, 3/5/12, Monday, 987
    12567, 2012, 3/5/12, Monday, 986
    12789, 2012, 3/6/12, Tuesday, 987

我需要获得平均每周一天的医生数量,其中年份= 2012年。在我看来,这应该有效,但事实并非如此: 选择dow,AVG(COUNT(DISTINCT(doctor_id)))AS AvgDocsInOffice 从访问 visit_year = 2012 GROUP BY dow

我正在尝试这个输出:

    DOW, AvgDocsInOffice
    Monday, 5
    Tuesday, 6
    Wednesday, 4

有什么想法吗?不幸的是,我在Access中坚持这样做。

2 个答案:

答案 0 :(得分:0)

SELECT dow, AVG(CntDocsInOffice) AS AvgDocsInOffice FROM
     (SELECT dow, visit_date, COUNT(*) AS CntDocsInOffice FROM
        (SELECT DISTINCT dow, visit_date, doctor_id FROM
            visits
         WHERE visit_year = 2012)
      GROUP BY dow, visit_date)
GROUP BY dow;

最内在的SELECT每天选择独特的医生 下一个外部SELECT计算每天唯一医生的数量 最外面的SELECT最终计算每周的平均医生数。

答案 1 :(得分:0)

怎么样:

SELECT q.dow,
       Avg(q.countofdoctor_id) AS avgofcountofdoctor_id
FROM   (SELECT v.visit_date,
               v.dow,
               COUNT(v.doctor_id) AS countofdoctor_id
        FROM   (SELECT DISTINCT visit_date,
                                dow,
                                doctor_id
                FROM   visits
                WHERE  visit_year = 2012) AS v
        GROUP  BY v.visit_date,
                  v.dow) AS q
GROUP  BY q.dow;