[ { "endpoint": "/rush-hour", "method": "GET", "query": "SELECT countIf(hour(tpep_pickup_datetime) >= {start_time:UInt32} AND hour(tpep_pickup_datetime) < {end_time:UInt32}) as rush_hour_rides, count() as total_rides, round(rush_hour_rides * 100.0 / total_rides, 2) as percentage FROM maddie.taxi_local FORMAT JSON" }, { "endpoint": "/tips", "method": "GET", "query": "SELECT floor(trip_distance) as distance_mile, round(avg(tip_amount * 100.0 / (total_amount - tip_amount)), 2) as avg_tip_pct, count() as num_trips FROM maddie.taxi_local WHERE trip_distance >= {min_distance:Float64} AND trip_distance < {max_distance:Float64} AND total_amount > tip_amount AND tip_amount >= 0 GROUP BY distance_mile ORDER BY distance_mile FORMAT JSON" }, { "endpoint": "/routes", "method": "GET", "query": "SELECT pz.Zone as pickup, dz.Zone as dropoff, count() as trip_count, round(avg(trip_distance), 2) as avg_distance, round(avg(total_amount), 2) as avg_fare FROM maddie.taxi_local AS t JOIN maddie.taxi_zones AS pz ON t.PULocationID = pz.LocationID JOIN maddie.taxi_zones AS dz ON t.DOLocationID = dz.LocationID WHERE pz.Borough = {borough:String} AND t.PULocationID != t.DOLocationID GROUP BY pickup, dropoff ORDER BY trip_count DESC LIMIT {limit:UInt32} FORMAT JSON" } ]