在没有总和的情况下在sql中进行计算

时间:2013-04-19 20:26:03

标签: sql oracle sum

我有这个表,我是使用内部联接从sql生成的,现在我想计算每个order_id的总成本,例如屏幕截图显示订单ID为127的4个订单,我想结合总成本每个订购的项目由127分成一个数字,与其他订单ID相同。 我的价格在另一个表中,我没有在此查询中指定。

我正在考虑做一些像数量*价格这样的事情,但我不知道如何将其与我上面提到的订单ID相关联。

非常感谢你的帮助:)。

sql:

select P.carrier_id, O.aircraft_id, O.order_id, O.quantity 
from orderline O 
inner join purchaseorder P on O.order_id = P.order_id;

我的结果到目前为止:

enter image description here

2 个答案:

答案 0 :(得分:2)

您想使用group by。我需要知道你的其余查询给你一个完整的版本,但是 - 粗略地说:

select P.carrier_id, O.aircraft_id, O.order_id, sum(O.quantity) -- columns
from orderline O 
inner join purchaseorder P on O.order_id = P.order_id -- tables and join
group by  P.carrier_id, O.aircraft_id, O.order_id;

您可能认为您只需按订单ID进行分组,但经验法则实际上是“按您未计算的所有内容进行分组(或汇总...)

此外,正如另一个答案所指出的,如果您有价格记录,您可以sum(O.quantity*P.price)或接近该价格的东西来获得每个订单的总价。

答案 1 :(得分:1)

您需要在GROUP BYORDER_ID上执行AIRCRAFT_ID,然后执行SUM(quantity * price)