找出最近三年每个客户的平均订单数量?

时间:2019-12-30 15:18:23

标签: sql sql-server

我想找出过去三年中每个客户的平均订单数。  我正在尝试以下查询:

SELECT Name,SalesOrderDetailID, AVG(OrderQty) AS Average
FROM Sales.SalesOrderDetail  
inner join Production.Product 
        on Sales.SalesOrderDetail.ProductID = Production.Product.ProductID
GROUP BY SalesOrderDetailID, Name
having(year(ModifiedDate)) > DATEADD(yy, -1, CONVERT(datetime, CONVERT(varchar, GETDATE(), 101)));

但是我遇到了这个错误:

  

“ Sales.SalesOrderDetail.ModifiedDate”列无效   在HAVING子句中,因为两者都不包含   聚合函数或GROUP BY子句。

1 个答案:

答案 0 :(得分:2)

每个客户的平均订单数是一个值-订单总数除以客户数。

因此,我期望这样的事情:

SELECT COUNT(DISTINCT sod.order_id) * 1.0 / NULLIF(COUNT(DISTINCT sod.customer_id), 0)
FROM Sales.SalesOrderDetail sod
WHERE sod.ModifiedDate >= DATEADD(year, -3, GETDATE());