SQL Max (Количество * ProductPrice) - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь ответить на вопрос, какой идентификатор продукта и ProductName принесли больше дохода, чем средний доход, полученный от продукта в магазине.

У меня есть следующий код:

Select ProductName, SupplierName, MAX(Quantity*ProductPrice) as TotalRev
From Products
Where MAX(TotalRev) > AVG(TotalRev)

Все же это приводит к ошибке.

Пример данных

ProductID  ProductName  SupplierName ProductType Quantity ProductPrice
10001      GreenJacket  GAP          Jackets     100      $10
10002      StarEarrings Oldnavy      Accessories 200      $5
10003     YellowDress   BRP          Dress       150      $10

В идеале, я бы хотелкод для указания идентификатора ProductID и названия продукта, если продукт приносил больший доход, чем средний доход.

1 Ответ

0 голосов
/ 28 января 2019

Вам нужно предложение having и подзапрос:

Select ProductId, ProductName,
       SUM(Quantity*ProductPrice) as TotalRev
From Products
group by ProductId, ProductName
having SUM(Quantity*ProductPrice) >= (select avg(revenue) 
                                      from (select sum(p2.quantity * p2.ProductPrice) as revenue
                                            from products as p2
                                            group by p2.ProductId, p2.ProductName
                                           ) as p3
                                      );

Я бы посоветовал вам запустить подзапрос в предложении having, чтобы вы полностью поняли, что он делает.

...