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

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

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 Ответ

0 голосов
/ 13 января 2019

Делает ли это то, что вы хотите?

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.
...