2016-09-28 2 views
0

Ich verwende die folgende Postgres SQL-Abfrage:Postgresql Zählergebnisse für zurückgegebene Benutzerfeld

SELECT user_id FROM user_log WHERE date>='2016-08-09' ORDER by user_id ASC 

Es gibt das Ergebnis und gruppiert sie durch user_id, so zum Beispiel ich mit mehreren Ergebnissen aus gleicher User_id kann am Ende, wie im Beispiel unten:

user_id 
1001 
1001 
1001 
1008 
1008 

anstatt jede user_id aufzulisten, möchte ich nur die Anzahl der Ergebnisse für jede user_id zählen. So zum Beispiel oben Ich möchte wissen, dass 1001 drei und 1008 2.

ist Gibt es eine Möglichkeit, dies mit einer SQL-Abfrage direkt zu tun?

Antwort

1

Sie können versuchen, eine einfache GROUP BY Abfrage zu tun, mit user_id die Gruppe zu bestimmen, für die Sie die Zählung wollen:

SELECT user_id, COUNT(*) AS userCount 
FROM user_log 
WHERE date>='2016-08-09' 
GROUP BY user_id 
ORDER by user_id ASC 

Wenn Sie zum Beispiel beschränken, für die Nutzer nur eine Anzahl von zumindest mit 3, dann können Sie eine HAVING Klausel hinzufügen:

SELECT user_id, COUNT(*) AS userCount 
FROM user_log 
WHERE date>='2016-08-09' 
GROUP BY user_id 
HAVING COUNT(*) >= 3 
ORDER by user_id ASC 
+0

Awesome, ist es eine Möglichkeit, ich auch die Usercount-Klausel in die WHERE hinzufügen können? also zum Beispiel wenn ich nach userCount> = 3 suche? – Ahmed

+0

@Ahmed Fügen Sie der 'HAVING'-Klausel eine Einschränkung hinzu, nicht' WHERE'. –

+0

Ehrfürchtig, danke – Ahmed