У меня есть две таблицы, которые вы также можете найти в SQL скрипке :
CREATE TABLE Sales (
Product_ID VARCHAR(255),
Category_ID VARCHAR(255),
Sales_Value VARCHAR(255),
Sales_Quantity VARCHAR(255)
);
INSERT INTO Sales
(Product_ID, Category_ID, Sales_Value, Sales_Quantity)
VALUES
("P001", "C001", "500", "200"),
("P002", "C001", "600", "100"),
("P003", "C002", "300", "250"),
("P004", "C002", "900", "400"),
("P005", "C002", "800", "600"),
("P006", "C003", "200", "150"),
("P007", "C003", "700", "550");
CREATE TABLE Categories (
Category_ID VARCHAR(255),
Category_Name VARCHAR(255)
);
INSERT INTO Categories
(Category_ID, Category_Name)
VALUES
("C001", "Fashion"),
("C002", "Sport"),
("C003", "Shoes");
Первая таблица содержит Sales
для каждой товар.
Вторая таблица содержит Categories
.
Теперь я хочу отобразить все продукты и average_sales_price_per_category
рядом с каждым продуктом.
Результат должен выглядеть следующим образом:
Product_ID Category average_sales_price_per_category
P001 Fashion 3.66
P002 Fashion 3.66
P003 Sport 1.60
P004 Sport 1.60
P005 Sport 1.60
P006 Shoes 1.28
P007 Shoes 1.28
Я пытался go с решением от этот вопрос , но я думаю, что предложение OVER
не доступно в моем MySQL
версия:
SELECT
s.Product_ID,
c.Category_Name,
((SUM(s.Sales_Value * s.Sales_Quantity) over (partition BY c.Category_ID) /
SUM(s.Sales_Value) over (partition BY c.Category_ID)) as average_sales_price
FROM Sales s
JOIN Categories c ON c.Category_ID = s.Category_ID;
Ошибка:
проверьте руководство, соответствующее вашей MySQL версии сервера, на предмет правильного синтаксиса для использования почти (раздел BY c .Category_ID) / SUM (s.Sales_Value) over (partition BY c .Cate 'в строке 4
Какие еще SQL я могу использовать для получения ожидаемого результата?