3

私は2つのテーブルを持っています:

1.customer (contains customers)
2.customer_order (contains orders)

これを知りたい:

no. of customers with 0 orders
no. of customers with 1 order
no. of customers with 2 orders
etc

私はこれを持っています:

SELECT COUNT(co.id)
FROM customer c
LEFT JOIN customer_order co
ON c.id=co.id_customer
GROUP BY ??? ;
4

4 に答える 4

3

これにより、顧客ごとの注文量が得られます

SELECT co.id Customer, COUNT(*) Orders
FROM customer_order co  
GROUP BY co.id_customer;

それをテーブルとして使用し、クエリを実行します

SELECT Orders, COUNT(*)
FROM (
  SELECT co.id Customer, COUNT(*) Orders
  FROM customer_order co  
  GROUP BY co.id_customer;
)
GROUP BY Orders
于 2013-09-19T13:08:59.973 に答える
1

次のようなサブクエリが必要です。

SELECT cnt, count(*) FROM (SELECT c.id, count(*) cnt FROM customer c 
                      LEFT JOIN customer_order co ON c.id=co.id_customer 
                      GROUP BY c.id) GROUP BY cnt
于 2013-09-19T13:09:02.017 に答える
1

試す:

SELECT count(*), order_count
FROM (
  SELECT c.id, count(*) AS order_count
  FROM customer c, customer_order co
  WHERE c.id = co.id_customer
  GROUP BY c.id
) as A
GROUP BY order_count

これは、実際のクエリとテスト データを含むSQL Fiddleです。

于 2013-09-19T13:09:06.483 に答える
0

いいえを取得できるように、順序でグループ化する必要があります。注文ごとの顧客数

于 2013-09-19T13:10:55.250 に答える