Создайте процедуру, которая показывает заказы клиентов: итоговое количество и количество заказов в отдельные годы. Идентификатор клиента при вводе в процедуру
У меня проблемы с процедурой, потому что я не знаю, как подсчитать количество заказов в отдельные годы.
CREATE PROCEDURE Orders @id VARCHAR(10)
AS
SELECT unitprice * quantity Amount,
Count([order details].orderid),
Year(orderdate)
FROM [order details]
INNER JOIN orders
ON [order details].orderid = orders.orderid
WHERE customerid = @id
GROUP BY unitprice * quantity,
Year(orderdate),
[order details].orderid
Я должен группировать по годам, но я не знаю, как это сделать. Пожалуйста, помогите мне кто-нибудь:)
1 ответ
Делает ли это то, что вы хотите?
SELECT YEAR(o.OrderDate) as yyyy,
SUM(od.UNITPRICE*od.QUANTITY) as Amount,
count(*) as num_orders
FROM [Order Details] od INNER JOIN
Orders o
on od.OrderID = o.OrderID
WHERE o.CustomerID = @id
GROUP BY Year(OrderDate);
Заметки:
- Дайте все столбцы в
SELECT
псевдоним, так что вы знаете, что они должны делать. - Псевдонимы таблиц облегчают написание и чтение запроса.
- Уточните все имена столбцов, чтобы вы знали, из какой таблицы они происходят.
- Единственные выражения в
GROUP BY
должны быть неагрегированные столбцы вSELECT
,