我的情况如下
--source data
departuredttm flight_source flight_destination available_seats
13-07-2016 04:00:00 A B 200
13-07-2016 08:00:00 A B 320
13-07-2016 08:20:00 A B 20
我有一个查询表,告诉我们这个来源和目的地的乘客总数是多少,其航班延迟并且需要在源数据中的可用座位进行调整。查找表是这样的。
--lookup table for passenger_from_delayed_flights
flight_source flight_destination passengers
A B 500
现在我必须像在源数据中那样调整这500名乘客的可用座位
---output
DepartureDttm flight_source flight_destination AVAILABLE_SEATS PASSENGERS_TO_ADJUST PASSENGER_LEFT
13-07-2016 04:00:00 A B 200 500 300
13-07-2016 08:00:00 A B 320 300 20
13-07-2016 08:20:00 A B 20 20 0
最初调整的乘客是500,我们有200个座位,接下来有320个座位,我们需要调整300(500-200)名乘客。
请帮忙
由于
答案 0 :(得分:1)
您的预期结果可能有误,第二次飞行已经有足够的座位,因此PASSENGER_LEFT
应为-20(或0)。
这是基于运行总计的计算:
passengers - SUM(available_seats)
OVER (ORDER BY departuredttm
ROWS UNBOUNDED PRECEDING) AS PASSENGER_LEFT
available_seats + PASSENGER_LEFT AS PASSENGERS_TO_ADJUST