Я пытаюсь объединить некоторые данные заказов клиентов в одну таблицу для анализа.Данные - это количество продуктов, которые заказывает клиент, затем пытается определить, является ли заказ небольшим, средним или крупным заказом, а затем определить общее количество продуктов, которые он купил, и стоимость заказа на OrderSize
.
Малый заказ - 1 - 2 товара
Средний заказ - 3 - 4 товара
Большой заказ -> = 5 товаров
Вот данные:
CustomerID OrderID OrderSize OrderTotal
1 800 1 $20
2 801 1 $10
3 802 4 $85
1 803 1 $30
2 804 8 $120
3 805 1 $40
Вот таблица, которую я пытаюсь построить (проще просто опубликовать изображение):
Я мог бы выполнить такой запрос на обновление, чтобы заполнить таблицу:
-- Создать таблицу -
CREATE TABLE Customers (
CustomerID varchar(10) PRIMARY KEY,
SmallOrderCount int,
SmallOrderProducts int,
SmallOrderTotal money,
MedOrderCount int,
MedOrderProducts int,
MedOrderTotal money,
LargeOrderCount int,
LargeOrderProducts int,
LargeOrderTotal money
);
- Вставить уникальных клиентов -
INSERT INTO Customers
SELECT CustomerID FROM Orders GROUP BY CustomerID;
- Обновить для заполнения информации о заказе -
UPDATE Customers
SET SmallOrderCount = (SELECT count(*) FROM Orders WHERE OrderSize BETWEEN 1 AND 2 AND Orders.CustomerID = Customers.CustomerID);
UPDATE Customers
SET SmallOrderProducts = (SELECT sum(OrderSize) FROM Orders WHERE OrderSize BETWEEN 1 AND 2 AND Orders.CustomerID = Customers.CustomerID);
UPDATE Customers
SET SmallOrderTotal = (SELECT sum(OrderTotal) FROM Orders WHERE OrderSize BETWEEN 1 AND 2 AND Orders.CustomerID = Customers.CustomerID);
Тогда я мог бы повторить это для оставшихся 6 столбцов.
Однако, это похоже на большую работу.Есть ли способ заполнить мою таблицу Customer
с помощью подзапроса, который может быть менее трудоемким?Или мой подход выше самого прямого?