Access 中不同天数的平均值

Posted

技术标签:

【中文标题】Access 中不同天数的平均值【英文标题】:Average of a distinct count by day in Access 【发布时间】:2012-03-08 20:34:32 【问题描述】:

我正在尝试从 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 从访问 访问年份 = 2012 GROUP BY

我正在尝试得到这个输出:

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

有什么想法吗?不幸的是,我被困在 Access 中。

【问题讨论】:

【参考方案1】:
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 最终计算出一周中每天的平均医生人数。

【讨论】:

@Remou:好点。这取决于doctor_id 是否为必填字段。 谢谢 - 效果很好!医生 ID 是必需的,所以那里没有问题。三个 select 语句,哇。我想我会用下午剩下的时间来解决这个问题。【参考方案2】:

怎么样:

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; 

【讨论】:

这个也可以,谢谢!我得到了与使用 Oliver Jacot-Descombes 的代码相同的结果。我不确定其中一个是否比另一个更有效,或者只是做同样事情的不同方式。但它有助于从两个方面看待它。希望我能将它们都标记为我的答案。

以上是关于Access 中不同天数的平均值的主要内容,如果未能解决你的问题,请参考以下文章

每天获取产品销售额的平均值并计算销售额为正的天数

获取 Pandas 的平均年份(多年的平均天数)

使用 SQL,我怎样才能在给定的天数内对每一天的未指定数量的记录进行滚动平均?

MySQL平均温度指定天数

记录少于 2 列之间的平均天数

计算两个日期之间的平均天数