在较大的数据库中使用MySQL查询时需要一些帮助。在这里简化,我需要找到与每个订单大小相关的订单数量。
我一直在尝试使查询与许多组合一起使用,例如:COUNT(DISTINCT item)或GROUP_CONCAT(DISTINCT order_id),GROUP BY,ORDER BY,HAVING COUNT(DISTINCT item_id)等,但是并没有像我真正需要的那样。对于使我朝正确方向前进的任何帮助,将不胜感激。
在此示例表中,名为item的订单具有1个order_id的人订购了3个项目,order_id为4的人员仅订购了1个项目,order_id为5的人员订购了2个项目,等等。此刻,他们最多只能订购三个项目,但将来可能会添加更多项目,因此需要以可扩展至4个项目,5个项目等的方式编写查询。
表名是:项目
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
答案 0 :(得分:0)
您必须两次group by
。
select item_count,count(*)
from (select order_id,count(*) as item_count
from tbl
group by order_id
) t
group by item_count
答案 1 :(得分:0)
您可以使用两种聚合级别:
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;