Oracle: совместное использование подзапросов, JOIN и различных функций
Вот как я сделал шаг за шагом:
M1. создайте подзапрос, который будет возвращать CustomerId и общее количество, выставленное для этого клиента
M2. Второй подзапрос, который предоставит список отдельных ProductID (вместе с SKU) и CustomerID.
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)
1 ответ
Вы также можете использовать ключевое слово DISTINCT в предложении select для получения уникальных значений. Попробуйте это для м2:
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;