次の構造を持つこれらの 3 つのテーブルがあります。
製品
product_id | category_id | product_name
お客様
customer_id | customer_name
注文
order_id | customer_id | product_id
製品を購入したカテゴリの数に関する上位の顧客を出力する SQL クエリを作成する必要があります (最良の顧客とは、最も多くのカテゴリから購入した顧客です)。
誰でもその方法を教えてもらえますか?
私はこのように試しましたが、「GROUP BY式ではありません」という次のエラーが表示されます。
select
(select customer_name
from customers
where customers.customer_id = orders.customer_id) as name,
(select count(category_id)
from products
where products.product_id = orders.product_id)
from
orders
group by
customer_id
order by
count(customer_id) desc;
お客様が購入した製品の数に関して、私はなんとかトップになりました。私が使用した解決策は次のとおりです。
select
(select customer_name from customers
where customers.customer_id = orders.customer_id) as name,
count(product_id) as "number of ordered products"
from
orders
group by
customer_id
order by
count(product_id) desc;