题解 | #国庆期间近7日日均取消订单量#

国庆期间近7日日均取消订单量

https://www.nowcoder.com/practice/2b330aa6cc994ec2a988704a078a0703

# 感觉和上一道困难题如出一辙。这道明显要简单许多
# 求近7日日均订单完成量和日均订单取消量
# 限制是国庆前三天每天的

# 尝试使用滑动窗口函数。
# 先统计最远的,2021-9-25到10-3每天的订单完成和取消量
# 再滑动统计日均完成和取消量

# 临时表,对日期分组,计算每天的成功订单数、未完成订单数
WITH temp_0 AS(
    SELECT DATE(order_time) dt, COUNT(fare) over_cnt, SUM(IF(fare, 0, 1)) fail_cnt
    FROM tb_get_car_order
	# 不要忘了限定时间范围
    WHERE DATE(order_time) BETWEEN '2021-09-25' AND '2021-10-3'
    GROUP BY dt
    ORDER BY dt
    )
	
# 主查询,直接用滑动窗口函数求前6天到今天的均值即可。当然,这样求出来是每天都有记录,因此在最后限定跳过前6条,输出3条记录即可
SELECT dt, ROUND(AVG(over_cnt) OVER(ORDER BY dt ROWS 6 PRECEDING),2) finish_num_7d, ROUND(AVG(fail_cnt) OVER(ORDER BY dt ROWS 6 PRECEDING),2) cancel_num_7d
FROM temp_0
ORDER BY dt
LIMIT 6, 3

踩的坑:虽然写了要限定时间范围,但是写代码的时候第一次忘了,有个用例没通过才想起来

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务