1、分析题目:请统计国庆头3天里,每天的近7日日均订单完成量和日均订单取消量,按日期升序排序。结果保留2位小数。
①国庆头3天:2021-10-01 --- 2021-10-03
②每天的近7日的日均xxx:按照国庆头3天中的每1天为基础,统计其前7天汇总之后xxx的平均值👉1天的前7天👉窗口函数

2、实操:
①建立临时表,先将国庆节每1天的订单完成量进行汇总:订单完成量 = 当‘start_time/mileage/fare/grade(注意:此处用的是start_time)’为非null的时候,就说明订单已经完成《当司机接上乘客时,填充订单表中该start_time-开始计费的上车时间》;订单取消量 = 为null,就说明订单未完成《若乘客上车前,乘客或司机点击取消订单,会将打车订单表对应订单的finish_time-订单完成时间填充为取消时间,其余字段设为null》。
with time
as
    (select date_format(order_time, '%Y-%m-%d') as dt,
    sum(case when start_time is not null then 1 else 0 end) as finish_mun,
    sum(case when start_time is null then 1 else 0 end) as cancel_num

    from tb_get_car_order

    group by 1
    order by 1)
②紧接着用窗口函数统计国庆每1天的 “前7天” 数据,然后筛选出 ‘国庆前3天’ 的数据即可
select *
from(
select dt,
round(sum(finish_mun) over(order by dt rows 6 preceding) / 7 , 2) as finish_num_7d,
round(sum(cancel_num) over(order by dt rows 6 preceding) / 7 , 2) as cancel_num_7d
from time) as t1
where dt between '2021-10-01' and '2021-10-03'