2016-07-21 4 views
0

Ich versuche, die Anzahl der Buchungen von gestern zu bekommen. Hier ist mein Code:PostgreSQL: versuchen, die Zählung gestern abzurufen

SELECT COUNT(distinct be.booking_id) AS "Number of Bookings Approved Today", 
     TO_CHAR(be.created_at, 'yyyy-mm-dd') as "id" 
FROM booking_events be 
WHERE be.event IN ('approve', 'instant_approve') AND 
     be.created_at > TIMESTAMP 'yesterday' AND 
     be.created_at < TIMESTAMP 'today' 
GROUP BY be.created_at; 

Gerade jetzt, oben Code pflegen lassen Sie mich die tatsächliche Zählung der Anzahl der Buchungen von gestern anzuzeigen. Vielmehr ruft es alle Zeilen wie folgt aus:

Date   # of bookings 
<yesterday's date>  1 
<yesterday's date>  1 
<yesterday's date>  1 
<yesterday's date>  1 
<yesterday's date>  1 
<yesterday's date>  1 
<yesterday's date>  1 

Ich will es für das gestrige Datum wie dies die Gesamtzahl zurück:

Date,   # of bookings 
<yesterday's date>  7 

Hoffnung jemand ist in der Lage, mir zu helfen. Es ist wahrscheinlich eine einfache Lösung, aber ich kann mein Gehirn nicht damit umgehen!

+1

Versuchen Sie, Ihre 'group by' -Klausel in' TO_CHAR zu ändern (be.created_at, 'yyyy-mm-dd') 'Ich vermute, es ist ein Zeitstempel, der auch Zeitdaten enthält, die die Gruppierung vermasseln. – jpw

+0

Ich habe das alleine mit 'GROUP BY 2' gemacht. Trotzdem danke! – DBE7

Antwort

1

Vielleicht ist be.created_at ein Zeitstempel mit einem Zeitteil?

Versuchen Sie, Ihre group by-Klausel auf TO_CHAR(be.created_at, 'yyyy-mm-dd') zu ändern, sodass die Gruppierung nur nach dem Datumsteil erfolgt. Oder Sie könnten group by mit einem Ordinalwert verwenden, der angibt, dass die Spalte aus der Select-Anweisung gruppiert werden soll: group by 2 (für die zweite Spalte - das Datum in Ihrer Beispielabfrage).

0

Ich erkannte, dass ich nur GROUP BY 2 hatte. @jpw hat die Gründe dafür kommentiert!

Verwandte Themen