0

これが私が段階的に構築した方法です:

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)
4

1 に答える 1

0

一意の値を取得するために、select 句で DISTINCT キーワードを使用することもできます。これをm2で試してください:

select DISTINCT p.productID, p.sku, i.customerID
from invoice i INNER JOIN invoiceLine il
ON i.invoiceID = il.invoiceID
JOIN product p 
ON il.productID = p.productID;
于 2013-11-26T21:53:27.020 に答える