Flight Data — Delay Pattern by Departure Hour
Flight Data benchmark · all Flight Data queries
Average delay minutes by scheduled departure hour
Representative SQL
Rendered in the benchmark’s native SQL with default parameters (no dialect translation available).
SELECT CAST(FLOOR(f.crs_dep_time / 100) AS INT) AS dep_hour, 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_count, ROUND(100.0 * SUM(CASE WHEN f.dep_delay > 15 THEN 1 ELSE 0 END) / COUNT(*), 2) AS delay_rate_pctFROM flights AS fWHERE f.cancelled = 0 AND NOT f.dep_delay IS NULL AND NOT f.crs_dep_time IS NULL AND f.flight_date >= '2021-08-01' AND f.flight_date < '2025-01-01'GROUP BY CAST(FLOOR(f.crs_dep_time / 100) AS INT)ORDER BY dep_hourRepresentative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def delay_by_hour_expression_impl(ctx: DataFrameContext) -> Any: flights, col, lit = _date_window( ctx, lambda col, lit: ( col("cancelled") == lit(0), col("dep_delay").is_not_null(), col("crs_dep_time").is_not_null(), ), )
return ( flights.with_columns( (col("crs_dep_time") / lit(100)).floor().cast(int).alias("dep_hour"), (col("dep_delay") > lit(15)).cast(int).alias("_delayed"), ) .group_by("dep_hour") .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_count"), ) .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"), _round_half_away(ctx, lit(100.0) * col("delayed_count") / col("total_flights"), 2).alias("delay_rate_pct"), ) .select("dep_hour", "total_flights", "avg_dep_delay", "avg_arr_delay", "delayed_count", "delay_rate_pct") .sort("dep_hour") )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-hour'])For the DataFrame form:
from benchbox.core.query_catalog import get_dataframe_render
print(get_dataframe_render('flightdata', 'delay-by-hour', family="expression").source) # or family="pandas"Source
Query text: benchbox/core/flightdata/queries.py