我非常擅长SQL并且正在完成一些任务以提升我的知识。不过,我发现自己陷入了困境 我必须使用乘法和减法找到项目的总利润,我已使用以下命令完成:
select
production.product.ProductID,
StandardCost,
sales.SalesOrderDetail.OrderQty,
UnitPrice,
(sales.SalesOrderDetail.UnitPrice*sales.SalesOrderDetail.OrderQty)-
(production.product.StandardCost*sales.salesorderdetail.OrderQty) as
'Total Profit'
from
sales.SalesOrderDetail,
production.product
我需要做的是将总利润相加并将其与ProductID分组,以便找到最有利可图的项目和最低利润的项目。我认为这样可行:
select
production.product.ProductID,
StandardCost,
sales.SalesOrderDetail.OrderQty,
UnitPrice,
sum((sales.SalesOrderDetail.UnitPrice*sales.SalesOrderDetail.OrderQty)-
(production.product.StandardCost*sales.salesorderdetail.OrderQty)) as
'Total Profit'
from
sales.SalesOrderDetail,
production.product
group by
Production.Product.ProductID
但是,我收到以下错误:
Column' production.product.StandardCost'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
我不知道该在哪里继续。我尝试重新排列并进行内/左连接,但我没有成功。
答案 0 :(得分:0)
因此,对于分组,您需要聚合或包含在group by语句中。 您按productID进行分组,但其他列未聚合且不在group by语句中。
可以进行修正(取决于您希望如何聚合其他列)
select
production.product.ProductID
, avg(StandardCost) as AvgCost
, sum(sales.SalesOrderDetail.OrderQty) as TotalQuantity
, avg(UnitPrice) as AvgUnitPrice
, sum((sales.SalesOrderDetail.UnitPrice*sales.SalesOrderDetail.OrderQty)-
(production.product.StandardCost*sales.salesorderdetail.OrderQty)) as [Total Profit]
from sales.SalesOrderDetail
, production.product
group by Production.Product.ProductID