Mysql-计算有多少行具有特定的数字?

Mysql-计算有多少行具有特定的数字?,sql,mysql,database,aggregate-functions,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

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

  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个。诸如此类的事情可以做到吗?

我想你可以在你的查询中添加这样的内容:

SELECT InnerCount, COUNT(*)
FROM
(
    -- your query
    SELECT username, count(userid) AS InnerCount
    FROM orders
    GROUP BY userid
) t1
GROUP BY InnerCount
(注意:多年没有接触过mysql)

使用:

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

将“?”替换为要查看具有该计数值的用户数的数字。

我得到此错误代码:1248每个派生表都必须有自己的别名我编辑它以添加“t1”在右括号后面的别名对我来说也是失败的。同样,我得到的错误代码是:1248每个派生表都必须有自己的alias@William史密斯:修复了,忘记添加表别名(“x”)。非常感谢您的帮助。注意:在测试时(在SQL server中,因为这是我手头上的),您必须将组更改为“userid,username”使其工作(首先,如果用户名不在GROUP BY中,则不能将其包括在选择列表中;其次,如果您只是将GROUP BY更改为“username”,则最后3行数据将全部合并在一起)。