我遇到了一些麻烦,弄清楚如何将标量函数组合在一起,其中包含1个订单的3个产品,只有2个产品适用于它们的折扣.15。正如你所看到的,我对此很陌生,但试图理解。谢谢你的帮助。
代码:
select distinct(sum (od.UnitPrice * od.Quantity - od.Discount)), o.OrderID
from Orders o
join OrderDetails od
on o.OrderID = od.OrderID
where o.OrderID = 10250
group by o.OrderID
关于如何将标量函数组合在一起可能会有所不同,但我得到一个总数,但它并没有单独对项目应用折扣。 再次感谢您的帮助!
答案 0 :(得分:0)
如果折扣是固定货币金额,如$ 5.00,您应该使用:
sum((od.unitprice-od.discount) * od.quantity)
如果它表示为.15之类的比例,则应使用:
sum(od.unitprice * (1-od.discount) * od.quantity)
请注意,您在此处使用的内容称为聚合函数,而不是标量函数。
此外,您应该从查询中删除distinct
。不同的重复删除整行。您无法将其应用于结果中的单个列,因此查询distinct( sum(...) )
中的括号毫无意义。在这种情况下,不会有重复的行,因为您按orderID进行分组,因此distinct不起作用。
只有在您有特定原因时才应使用distinct
。
答案 1 :(得分:0)
试试这个,如果您有任何疑问,请告诉我。
#如果在应用数量因子后提到折扣
select o.order_id,sum(od.unit_price*od.quantity-od.discount) as value
from
order o
left join
orderdetails od
on o.order_id = od.order_id
group by o.order_id;
#如果提到的折扣是针对单个项目的
select o.order_id,sum((od.unit_price-od.discount)*od.quantity) as value
from
order o
left join
orderdetails od
on o.order_id = od.order_id
group by o.order_id;
希望这会有所帮助:)