Создайте процедуру, которая показывает заказы клиентов: итоговое количество и количество заказов в отдельные годы. Идентификатор клиента при вводе в процедуру

У меня проблемы с процедурой, потому что я не знаю, как подсчитать количество заказов в отдельные годы.

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,
Другие вопросы по тегам