これが私が段階的に構築した方法です:
M1。CustomerId とその顧客の合計請求額を返すサブクエリを作成する
M2. 個別の ProductID (および製品 SKU) と CustomerID のリストを提供する 2 番目のサブクエリ。
M3. M1 サブクエリと M2 サブクエリは結合され、顧客の合計と製品 (同じ CustomerId の場合) が関連付けられます。
M4. クエリ M3 は、上位 5 つの製品を検索する最後のクエリに渡されます。
個別の ProductID と customerID を作成することに固執しています。それらを区別するには集計関数にする必要があるからです。
システムを理解するのに役立つアーウィン図の画像が添付されています。
M1~M4でお役に立てれば幸いです。私は本業のプログラマーではなく、ビジネス アナリストです。
--M1--
select C.CustomerId, COUNT(I.InvoiceId) TotalNumInvoices
from Customer C
JOIN Invoice I ON (I.CustomerId = C.CustomerId)
group by C.CustomerId
--M2: Incomplete--
select P.ProductID, P.SKU, C.CustomerID
from Product P
JOIN InvoiceLine IL ON (IL.ProductId = P.ProductId)
JOIN Invoice I ON (IL.InvoiceId = I.InvoiceId)
JOIN Customer C ON (C.CustomerId = I.CustomerId)