WITH
    temp AS (
        SELECT
            a.destination_city,
            b.transport_name,
            DATEDIFF(a.delivery_date, a.order_date) AS duration,
            c.total_cost
        FROM
            order_info AS a
            INNER JOIN transport_detail AS b ON a.transport_id = b.transport_id
            INNER JOIN cost_data AS c ON a.order_id = c.order_id
    )
SELECT
    destination_city,
    transport_name,
    round(avg(duration), 2) average_transport_duration,
    round(sum(total_cost), 2) total_transport_cost
FROM
    temp
GROUP BY
    destination_city,
    transport_name
ORDER BY
    destination_city ASC,
    transport_name ASC

此题ez,将orders_info作为主表和剩下两个表相连然后GROUP BY 就好了