Количество разных идентификаторов пользователя, найденных в таблице более 3 раз - PullRequest
0 голосов
/ 03 июля 2019

У меня есть задача, есть таблица с разными идентификаторами пользователей, и SQL-запрос должен подсчитывать количество разных идентификаторов пользователей, которые встречались в таблице более 3 раз. Например, число идентификаторов в таблице равно 1, 1, 2, 1, 3, 4, 3, 3, 1, 2, 3, 4, 5, 4, 5, 4, так как число 1, 3 и 4 произошло в В таблице более 3-х раз SQL-запрос должен возвращать только одну строку с номером 3. То, что я сделал до сих пор:

SELECT COUNT(*) counter 
   FROM (SELECT COUNT(id) as counter_id FROM user_id GROUP BY id HAVING COUNT(id) >3)

Я не уверен, что один правильный, если он неправильный, будет правильным.

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Вы пытались запустить запрос?

SELECT COUNT(*) counter
FROM (SELECT COUNT(id) as counter_id
      FROM user_id
      GROUP BY id
      HAVING COUNT(id) > 3
     )

Если это так, вы получите ошибку, поскольку подзапрос в предложении FROM требует псевдонима.Кроме того, странно, что таблица будет называться user_id.

SELECT COUNT(*) counter
FROM (SELECT COUNT(id) as counter_id
      FROM user_id
      GROUP BY id
      HAVING COUNT(id) > 3
     ) u
-------^
0 голосов
/ 03 июля 2019

использовать distinct в count () и получать только идентификатор из вывода подзапроса

select count(distinct id) from ( SELECT id  
FROM user GROUP BY id 
HAVING COUNT(id) >3) a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...