2012-03-08 3 views
1

Access 2010 데이터베이스에서 평균 개수가 매우 많아서 작동하지 않는 것으로 보입니다. 하위 쿼리를 사용해 보았지만 주 메뉴에 링크하는 방법을 알 수 없습니다. 표는이 같은 모든 사무실 방문에 대한 행이 있습니다 :Access에서 일별 고유 카운트의 평균

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 내 머리에이 일을해야 일주일에 하루에 가능한 의사의 평균 수를 얻을 필요가 있지만 그렇지 않습니다 : 선택 다우, AVG AvgDocsInOffice AS 방문 에서 (COUNT (DISTINCT (doctor_id))) WHERE 다우

BY visit_year = 2012 GROUP

내가이 출력에 도달하기 위해 노력하고있어 :

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

어떤 아이디어? 불행히도 나는 Access에서이 일을 저지르고있다.

답변

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는 마침내 요일별 평균 의사 수를 계산합니다.

+0

카운트 (*). – Fionnuala

+0

@Remou : 좋은 지적입니다. 'doctor_id'가 필수 필드인지 여부에 따라 다릅니다. –

+0

감사합니다. doctor_id가 필요하므로 문제가 없습니다. 세 가지 선택 진술. 와우. 나는 오후의 나머지 부분을 이것으로 머리를 감싼다. – Anubis584

0

방법에 대해 : 널 (null)을 계산합니다

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; 
+0

너무 고마워! Oliver Jacot-Descombes의 코드와 같은 결과를 얻었습니다. 나는 이것들 중 하나가 다른 것보다 더 효율적인지 혹은 똑같은 일을하는 다른 방법인지 확실하지 않습니다. 그러나 그것은 두 가지면에서 모두 도움이됩니다. 두 가지를 모두 내 대답으로 표시 할 수 있기를 바랍니다. – Anubis584