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;
Другие вопросы по тегам