0

次の構造を持つこれらの 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;
4

1 に答える 1