我的任务是:选择所有有利可图的航班。 transportation
是有关航班的一般信息。 ticket
包含有关许多票证及其费用的信息。因此,如何串联UPDATE
和SELECT
表以便仅查找那些profit
大于0的行。UPDATE
表应该先行,因为profit
字段为空
UPDATE transportations
set profit =((transportations.ticket.cost*
(transportations.ticket.sold_q+transportations.ticket.booked_q))-(0.2*
transportations.plan_oil))
WHERE profit is null
SELECT profit FROM transportations
WHERE profit >0
ORDER BY profit
答案 0 :(得分:0)
通常不建议保存计算的数据。而且您似乎正在使用多值字段。如何保存每张票的利润计算?为每个航班记录节省利润将需要汇总机票计算。使用UPDATE保存聚合数据将导致“不可更新”错误。
如果您想返回每张彩票的利润计算,并且仅返回大于0的利润计算,请尝试:
SELECT *, (ticket.cost * (ticket.sold_q + ticket.booked_q))-(0.2* plan_oil) AS Profit
FROM transportations
WHERE (ticket.cost * (ticket.sold_q + ticket.booked_q))-(0.2* plan_oil) > 0;
如果要考虑每个航班的总利润,请尝试:
SELECT FlightID, Sum((ticket.cost * (ticket.sold_q + ticket.booked_q))-(0.2* plan_oil)) AS Profit
FROM transportations
GROUP BY FlightID
HAVING Sum((ticket.cost * (ticket.sold_q + ticket.booked_q))-(0.2* plan_oil)) > 0;