input('exposures', name: 'exposure') as exposure_input 
-> select({ 
    *,
     create_continuous( 
       [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 2000, 3000], 
       x -> if_then_else( 
	 x > exposure.floor_height, 
	 (x - exposure.floor_height) / min(x, exposure.building_height) * exposure.replacement_cost, 
	 0.0 
       ) 
     ) as function 
}) as exposure_and_function 

input('events', name: 'event') as event_input 

join(on: exposure.site = event.site) as join_events_to_exposures 

exposure_and_function -> join_events_to_exposures.lhs
event_input -> join_events_to_exposures.rhs

join_events_to_exposures 
-> select({
     exposure.id as exposure_id,
     event.id as event_id,
     event.site as site_id,
     apply_continuous(function, event.depth) as loss
   }) as apply_loss

-> group(
     select: {
       event_id,
       sum(loss) as total_loss
     },
     by: event_id
   )

-> sort(event_id) as "event-loss-simple-interpolation"
