2016-05-27 12 views
0

Ich bin wieder mit mehr potgresql Frage :)Berechnung aggregierter Feld

Ich habe eine Abfrage, die die Höhe der Zeit zwischen, wenn ein Plan zeigt erstellt wurde und wenn ein Plan wurde aktualisiert.

select 
    ... 

    EXTRACT(DAY FROM MAX(plans.updated_at) - MIN(plans.created_at)) AS DateDifference 

    ... 

Nun möchte Ich mag die Ergebnisse auszuschließen, wenn die Anzahl der Tage 0

Also habe ich versucht:

WHERE EXTRACT(DAY FROM MAX(plans.updated_at) - MIN(plans.created_at)) > 0 

Aber ich bekomme aggregierte Funktionen sind nicht erlaubt in denen.

Was wäre der beste Weg, dies zu erreichen?

Vielen Dank im Voraus

Antwort

2

Wenn Ihre Abfrage tut, was Sie wollen, dann würden Sie eine having-Klausel verwenden:

HAVING EXTRACT(DAY FROM MAX(plans.updated_at) - MIN(plans.created_at)) > 0 

Bedingungen auf aggregierter Werte müssen nach die Aggregation behandelt werden. Daher geht die Klausel nach der GROUP BY.