题解 | #国庆期间近7日日均取消订单量#
国庆期间近7日日均取消订单量
http://www.nowcoder.com/practice/2b330aa6cc994ec2a988704a078a0703
某滴前数据分析前来分享(这做题感觉太熟悉了
# 只要订单表有记录,就是有订单; # 订单只有两个状态:完成or取消;(判断依据:有start time就是接上了,就算“完成单”) # 所以不用管打车记录表的所有字段 # 这类题的模板:先求每一天,用窗口函数order by去圈定一个窗口,在这个窗口里做聚合,可以分组也可以不分组 SELECT t2.dt,finish_num_7d,cancel_num_7d FROM ( SELECT t1.dt ,ROUND((SUM(t1.finish_cnt) OVER(ORDER BY t1.dt ROWS 6 PRECEDING))/7,2) finish_num_7d ,ROUND((SUM(t1.cancel_cnt) OVER(ORDER BY t1.dt ROWS 6 PRECEDING))/7,2) cancel_num_7d FROM ( SELECT DATE(order_time) dt , COUNT(start_time) finish_cnt , COUNT(CASE WHEN start_time IS NULL THEN 1 END) cancel_cnt FROM tb_get_car_order GROUP BY DATE(order_time) ) t1 ) t2 WHERE t2.dt BETWEEN "2021-10-01" AND "2021-10-03" # 对所有“7天内”的时间窗口都计算在了t2表;但是最终只取出“某三天” ORDER BY t2.dt