Flight Data — Average Departure Delay by Origin Airport
Flight Data benchmark · all Flight Data queries
Average departure delay in minutes by origin airport
Representative SQL
Rendered in the benchmark’s native SQL with default parameters (no dialect translation available).
SELECT f.origin, ap.name AS airport_name, ap.city, ap.state, COUNT(*) AS total_flights, ROUND(AVG(f.dep_delay), 2) AS avg_dep_delay, ROUND(AVG(f.arr_delay), 2) AS avg_arr_delay, SUM(CASE WHEN f.dep_delay > 15 THEN 1 ELSE 0 END) AS delayed_flightsFROM flights AS fLEFT JOIN airports AS ap ON f.origin = ap.codeWHERE f.cancelled = 0 AND NOT f.dep_delay IS NULL AND f.flight_date >= '2021-08-01' AND f.flight_date < '2025-01-01'GROUP BY f.origin, ap.name, ap.city, ap.stateHAVING COUNT(*) >= 100ORDER BY avg_dep_delay DESC, f.originLIMIT 50Representative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def delay_by_airport_expression_impl(ctx: DataFrameContext) -> Any: flights = ctx.get_table("flights") col, lit = ctx.col, ctx.lit airports = ctx.get_table("airports")
ap = airports.select( col("code").alias("ap_code"), col("name").alias("airport_name"), col("city"), col("state"), )
return ( flights.join(ap, left_on="origin", right_on="ap_code", how="left") .filter( _date_condition( ctx.col, ctx.lit, lambda col, lit: (col("cancelled") == lit(0), col("dep_delay").is_not_null()) ) ) .with_columns((col("dep_delay") > lit(15)).cast(int).alias("_delayed")) .group_by("origin", "airport_name", "city", "state") .agg( col("flight_id").count().alias("total_flights"), col("dep_delay").mean().alias("_avg_dep"), col("arr_delay").mean().alias("_avg_arr"), col("_delayed").sum().alias("delayed_flights"), ) .with_columns( _round_half_away(ctx, col("_avg_dep"), 2).alias("avg_dep_delay"), _round_half_away(ctx, col("_avg_arr"), 2).alias("avg_arr_delay"), ) .select( "origin", "airport_name", "city", "state", "total_flights", "avg_dep_delay", "avg_arr_delay", "delayed_flights", ) .filter(col("total_flights") >= lit(100)) .sort(["avg_dep_delay", "origin"], descending=[True, False]) .limit(50) )Get the exact query for your run
The blocks above are representative. To get the precise statement a specific platform runs at a specific scale, substitute your own values:
from benchbox import FlightData
bench = FlightData(scale_factor=1.0) # your scale factorprint(bench.get_queries()['delay-by-airport'])For the DataFrame form:
from benchbox.core.query_catalog import get_dataframe_render
print(get_dataframe_render('flightdata', 'delay-by-airport', family="expression").source) # or family="pandas"Source
Query text: benchbox/core/flightdata/queries.py