2016-09-28 7 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を表示する代わりに

user_id 
1001 
1001 
1001 
1008 
1008 

の代わりに、各user_idの結果の数を数えたいだけです。上記の例では、1001が3で1008が2であることを知りたいと思います。

これはSQLクエリで直接行う方法はありますか?

答えて

1

あなたがカウント対象となるグループを決定user_idで、シンプルなGROUP BYクエリをやって試すことができます:

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

あなたは、例えば、ユーザーが唯一のカウント数を有することに、制限したい場合は、少なくとも

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

恐ろしい、私はまた、WHEREにUSERCOUNT句を追加することができる方法があります:3、あなたはHAVING句を追加することができますか?例えばuserCount> = 3を探しているのですか? – Ahmed

+0

@Ahmed 'HAVING'節には' WHERE'ではなく、制限を加えます。 –

+0

恐ろしい、ありがとう – Ahmed

関連する問題