2017-06-30 3 views
0

Dies ist wahrscheinlich ein dummer Fehler an meinem Ende, aber ich kann es mir nicht richtig vorstellen. Ich versuche Durchschnitt über eine Reihe von Daten aus einer Unterabfrage präsentierte in der folgenden Art und Weise gezogen zu berechnen:AVG gibt einen Count statt Durchschnitt

TotalPDMPs DefaultClinicID 
     13996  -1 
     134   23 
     432   29 
     123   26 
     39   27 
     13   21 
     40   24 
     46   30 
     1   25 

nun der Durchschnitt für jeden ‚DefaultClinicID‘ berechnet für ‚TotalPDMPs‘ ist das gleiche wie die Daten oben. Hier ist meine Abfrage für die durchschnittliche Berechnung:

select DefaultClinicID as ClinicID, AVG(TotalPDMPs) 
from 
(select count(p.PatientID) as TotalPDMPs, DefaultClinicID from PatientPrescriptionRegistry ppr, Patient p 
where p.PatientID = ppr.PatientID 
and p.NetworkID = 2 
    group by DefaultClinicID) p 
group by DefaultClinicID 

kann mir jemand sagen, was falsch ich hier tue?

Danke.

+0

Was ist das erwartete Ergebnis? – AvielNiego

+0

Ihr inneres 'select' gibt nur einen Datensatz für jede' DefaultClinicID' zurück, wie erwarten Sie einen unterschiedlichen Durchschnitt für jede 'DefaultClinicID' in der äußeren Abfrage –

Antwort

0

Die Gruppe nach Spalte ist die gleiche, so dass es eine Zählung in der inneren Abfrage von DefaultClinicID erhält und dann versucht, einen Durchschnitt der gleichen DefaultClinicID zu nehmen.

Macht das Sinn? Jede Aggregation in dieser Spalte, während Sie mit demselben Objekt gruppieren, gibt dasselbe zurück. Also für Klinik 23 wäre die durchschnittliche Berechnung: 134/1 = 134.

Ich denke, Sie müssen nur den Durchschnitt in Ihrer inneren Abfrage tun, und Sie bekommen, was Sie wollen. Oder vielleicht avg (distinct p.patientID) ist was du willst?

+0

. Es macht Sinn. Ich versuche, den Durchschnitt von "TotalPDMPs" für jede Klinik über die gesamte Reihe zu erhalten. Wie kann ich meine Abfrage ändern, um dies zu erreichen? –

+0

Das ist eine schwierige Frage, weil ich die Art Ihrer Daten nicht kenne. Ist der Patient mehrmals in der PatientPescriptionRegistry? Welche Frage möchten Sie genauer beantworten? Die durchschnittliche Anzahl der Patienten pro Klinik scheint mit diesen Daten keinen Sinn zu ergeben. Eine eindeutige Anzahl von Patienten pro Klinik könnte sinnvoll sein. Der Prozentsatz der einzelnen Besuche ist sinnvoll. Der Prozentsatz der Patienten in jeder Klinik könnte ebenfalls Sinn machen. Die durchschnittliche Anzahl von Patienten pro Tag in einer Klinik wäre sinnvoll. – Jesse

0

In der inneren Unterabfrage gruppieren Sie bereits nach DefaultClinicID, Also hat jede eindeutige DefaultClinicID bereits nur eine Zeile. Und der Mittelwert von x ist x.

Verwandte Themen