bucksbunny
@bucksbunny
Гуру бытия, философ, прокрастинатор, авантюрист

Какой запрос возвращает сумму продаж самого дорогого товара?

Схема БД состоит из двух таблиц: Product (ProdID, Name, Price) и Sales(Date, ProdID, Sum). Какой запрос возвращает сумму продаж самого дорогого товара в июне 2019 года. Запрос должен возвращать Name и Sum.
Вот моё решение:
SELECT Product.Name AS Наименование, Sales.Sum AS Сумма
FROM Product, Sales
WHERE Product.ProdID = Sales.ProdID AND YEAR(DATE) = 2019 AND MONTH(DATE) = 07 AND Price = max(Price);
GROUP BY Product.Name
  • Вопрос задан
  • 1292 просмотра
Решения вопроса 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
SELECT * FROM ( 
  -- SELECT MOST EXPENSIVE PRODUCT
  SELECT TOP(1) ProdID, Name 
  FROM Product 
  ORDER BY Price DESC 
) ExpensiveProd
JOIN (
  -- CALCULATE SALES BY PRODUCT IN DATE INTERVAL
  SELECT ProdID, SUM(Sum) ProdSales
  FROM Sales 
  WHERE Date BETWEEN '2019-07-01' AND '2019-07-31' GROUP BY ProdID
) ProdSales ON ProdSales.ProdID = ExpensiveProd.ProdID;


Test T-SQL query online
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker
Программист, энтузиаст
Добавьте сортировку по цене товара и ограничение выборки first 1.
Цену товара и идентификатор тоже придётся добавить в группировку. Порядок группировки не важен.
А из вашего условия нужно убрать равенство цены
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы