2016-04-10 18 views
0

Ich versuche, 2 Spalten zu bekommen. Einer mit nur wahren Werten von patient_healty und zweiten mit allen Werten von patient_healty aus der Abteilung.PostgreSQL wie man nur mit booleschen wahren Wert zählt

select 
    count(p1.patient_health) as not_health, 
    count(patient.id) as all, 
    department.name 
from 
    department 
inner join 
    doctor on department.id = doctor.department_id 
inner join 
    healing on doctor.id = healing.doctor_id 
inner join 
    patient as p1 on healing.patient_id = p1.id 
inner join 
    patient on healing.patient_id = patient.id 
group by 
    department.name 

Dies wird zwei Spalten aller Werte von patient_health und den Namen der Abteilung zurückzukehren. Dank

+0

Bitte beachten Sie die Tags bearbeiten postgresql und die Version Sie verwenden aufzunehmen. In den neueren gibt es eine saubere Lösung und für ältere gibt es eine andere –

+0

Mögliches Duplikat von [wie das Problem mit der Gruppe zu lösen und aggregieren Funktion in Postgresql] (http://stackoverflow.com/questions/30431574/how-to- Lösen Sie das Problem-mit-Gruppe-durch-und-Aggregat-Funktion-in-Postgresql) –

Antwort

0

Wenn ich richtig verstehe, können Sie avg() verwenden:

select avg(p1.patient_health::int) 
+0

Ich änderte die Frage, um verständlicher zu sein. Danke für deine Hilfe –

+0

Ich denke das macht immer noch was du willst. –

+0

Sie hatten Recht, vielen Dank für Ihre Hilfe! –

Verwandte Themen