2016-09-28 17 views
0

我運行下面的Postgres的SQL查詢:PostgreSQL的計數結果返回用戶字段

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

它通過USER_ID返回結果,並將它們分組,因此,例如,我可以從同一個USER_ID多個結果最終,像下面的例子:

user_id 
1001 
1001 
1001 
1008 
1008 

而不是列出每個user_id,我想只計算每個user_id的結果數。所以對於上面的例子,我想知道1001是3和1008是2.

有沒有什麼辦法直接用SQL查詢來做到這一點?

回答

1

你可以嘗試做一個簡單的GROUP BY查詢,與user_id確定您要計數組:

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

如果你想限制,例如,用戶只具有計數至少3,那麼你可以添加一個HAVING條款:

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

真棒,是有辦法,我也可以添加條款USERCOUNT到哪裏辦理?所以例如,如果我正在尋找userCount> = 3? – Ahmed

+0

@Ahmed爲「HAVING」子句添加限制,而不是「WHERE」。 –

+0

太棒了,謝謝 – Ahmed