input('exposures', name: 'exposure') as exposure_input 
-> group(
     select: {
       exposure.site as site,
       stack_continuous(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 
    },
    by: exposure.site
  ) as site_and_function 

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

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

site_and_function -> join_events_to_exposures.lhs
event_input -> join_events_to_exposures.rhs

join_events_to_exposures 

-> group(
     select: {
       event.id as event_id,
       sum(apply_continuous(function, event.depth)) as total_loss
     },
     by: event.id
   )

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