Mysql - Подсчитать, сколько строк имеют определенное количество? - PullRequest
2 голосов
/ 01 октября 2010

У меня есть запрос, который проверяет таблицы и группирует все записи от пользователя и подсчитывает эти записи

  SELECT username, 
         count(userid)  
    FROM orders 
GROUP BY userid

Это возвращает список имен пользователей и сколько заказов они отправили

username  count(userid)
------------------------
test      1  
test2     1  
test3     3  
test4     3  
test4     3  
test4     3  

Я хочу, чтобы запрос выполнял подсчет количества пользователей, имеющих X заказов, и возвращает это число.

Таким образом, из приведенных выше результатов пользователи, у которых 1 заказ, должны быть 2, а пользователи, у которых 3 заказа -4. И так далее, и так далее, можно ли это сделать?

Ответы [ 2 ]

3 голосов
/ 01 октября 2010

Я думаю, вы могли бы просто добавить что-то вроде этого в свой запрос:

SELECT InnerCount, COUNT(*)
FROM
(
    -- your query
    SELECT username, count(userid) AS InnerCount
    FROM orders
    GROUP BY userid
) t1
GROUP BY InnerCount

(Предостережение: не трогал mysql годами)

2 голосов
/ 01 октября 2010

Использование:

SELECT COUNT(*)
  FROM (SELECT o.username, 
               COUNT(o.userid) AS cnt
          FROM ORDERS o
      GROUP BY o.userid
        HAVING cnt = ?) x

Заменить "?" с номером, который вы хотите увидеть количество пользователей с этим значением счетчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...