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 中不同天数的平均值的主要内容,如果未能解决你的问题,请参考以下文章