with valid_order as (
    select
        t1.city as city,
        t2.driver_id as driver_id,
        count(t2.order_id) as order_num,
        sum(ifnull(fare,0)) as income
    from 
        tb_get_car_record t1
        join tb_get_car_order t2
        on t1.order_id = t2.order_id
    where city = '北京' and 
        date(t2.order_time) between '2021-10-01' and '2021-10-07' and
        date(t2.finish_time) between '2021-10-01' and '2021-10-07'
    group by t1.city, t2.driver_id
    having count(*) >= 3
)
select 
    city,
    round(avg(order_num), 3) as avg_order_num,
    round(avg(income), 3) as avg_income
from valid_order
group by city

注意:接单但被取消的订单也需要算在订单数量中!!!!所以不能加上start_time is not null