• 状态较为多样。
  • 发起订单:1;
  • 发起订单-司机未接单-取消订单:不会出现order_id,-1
  • 发起订单-司机接单-司机\乘客取消订单:没有start_time,存在finish_time,-1
  • 发起订单-司机接单-乘客成功上车:存在start_time, -1
WITH t1 AS(
    SELECT city
            , event_time AS dt
            , 1 AS statu
    FROM tb_get_car_record
    
    UNION ALL
    SELECT city
            , end_time AS dt
            , -1 AS statu
    FROM tb_get_car_record
    WHERE order_id IS NULL

    UNION ALL
    (
    SELECT city
            , IFNULL(start_time, finish_time) AS dt
            , -1 AS statu
    FROM tb_get_car_order
    JOIN tb_get_car_record USING(order_id)
    
    )
)

SELECT city
        ,MAX(wait_uv) AS max_wait_uv
FROM (
    SELECT city
            ,SUM(statu) OVER(PARTITION BY city, DATE(dt) ORDER BY dt, statu DESC) wait_uv
    FROM t1
    WHERE DATE_FORMAT(dt, '%Y%m') = '202110'
) data1
GROUP BY city
ORDER BY max_wait_uv