我想找出过去三年中每个客户的平均订单数。 我正在尝试以下查询:
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子句。
答案 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());