在MySQL中查找与每个订单大小相关的订单数量
需要一些关于MySQL查询的帮助,以便在更大的数据库中使用。在这里简化,我需要找到与每个订单大小相关的订单数量 我一直在尝试让查询与很多组合一起工作,比如:COUNT(DISTINCT item)或GROUP_CONCAT(DISTINCT order_id)、GROUP by、order by、HAVING COUNT(DISTINCT item_id)等等。但结果并不是我真正需要它。如果能帮助我朝着正确的方向前进,我将不胜感激 在这个名为items的示例表中,order_id为1的人订购了三件物品,order_id为4的人只订购了一件物品,order_id为5的人订购了两件物品,等等。目前,他们最多只能订购三件物品,但在未来,可以添加更多项,因此需要以可扩展为4项、5项等的方式编写查询 表名为:items在MySQL中查找与每个订单大小相关的订单数量,mysql,sql,group-by,Mysql,Sql,Group By,需要一些关于MySQL查询的帮助,以便在更大的数据库中使用。在这里简化,我需要找到与每个订单大小相关的订单数量 我一直在尝试让查询与很多组合一起工作,比如:COUNT(DISTINCT item)或GROUP_CONCAT(DISTINCT order_id)、GROUP by、order by、HAVING COUNT(DISTINCT item_id)等等。但结果并不是我真正需要它。如果能帮助我朝着正确的方向前进,我将不胜感激 在这个名为items的示例表中,order_id为1的人订购了三
item_id order_id item
-------------------------------
1 1 apple
2 1 orange
3 1 grape
4 2 grape
5 3 apple
6 3 orange
7 4 apple
8 5 orange
9 5 apple
10 6 apple
11 6 orange
12 6 grape
13 7 orange
14 8 grape
在本例中,查询结果将是:
Number_of_Orders Total_Order_Size
----------------------------------------
4 1
2 2
2 3
您必须按
分组两次
select item_count,count(*)
from (select order_id,count(*) as item_count
from tbl
group by order_id
) t
group by item_count
您可以使用两个级别的聚合:
select num_items, count(*) as num_orders
from (select order_id, count(*) as num_items
from t
group by order_id
) o
group by num_items
order by num_items;
哇,太快了。很好用!谢谢