Mysql - 计算有多少行有一定数量?

时间:2010-09-30 20:17:59

标签: sql mysql database aggregate-functions

我有一个查询表,检查用户的所有条目并对这些条目进行分组

  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 个答案:

答案 0 :(得分:3)

我认为您可以在查询中添加类似的内容:

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

(警告:多年来没有碰过mysql)

答案 1 :(得分:2)

使用:

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

替换“?”使用您希望查看具有该计数值的用户数的数字。