2016-09-28 2 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

Awesome, есть способ, я могу также добавить пункт UserCount в WHERE? так, например, если я ищу userCount> = 3? – Ahmed

+0

@Ahmed Добавить ограничение к предложению 'HAVING', а не' WHERE'. –

+0

Удивительный, спасибо – Ahmed

Смежные вопросы