题解 | 近7天骑手履约时效看板

近7天骑手履约时效看板

https://www.nowcoder.com/practice/25af5a3296c747f5b01fc589f1568514

select
*
,rank()over(partition by city order by on_time_rate desc,avg_minutes_7d) rank_in_city
from (
    select
    parcel.courier_id 
    ,courier_name 
    ,city    
    ,count(1) orders_7d
    ,sum(case when promised_minutes >= timestampdiff(minute,shipped_ts,delivered_ts) then 1 else 0 end) on_time_7d
    ,ifnull(ROUND(sum(case when promised_minutes >= timestampdiff(minute,shipped_ts,delivered_ts) then 1 else 0 end) / count(1), 2),0) on_time_rate
    ,ROUND(AVG(TIMESTAMPDIFF(MINUTE, shipped_ts, delivered_ts)), 2) avg_minutes_7d
    from courier join parcel on parcel.courier_id = courier.courier_id 
    where date_format(delivered_ts,'%Y-%m-%d') between 
    date_sub((select
    date_format(delivered_ts,'%Y-%m-%d')
    from (
        select
        *
        ,row_number()over(order by delivered_ts desc) rk   
        from parcel
    ) t1
    where rk = 1),interval 7 day)
    and
    (select
    date_format(delivered_ts,'%Y-%m-%d')
    from (
        select
        *
        ,row_number()over(order by delivered_ts desc) rk   
        from parcel
    ) t1
    where rk = 1)    
    group by 1,2,3
) t2
where orders_7d > 0
order by 3,8,1

全部评论

相关推荐

不想上班的肱二头肌很...:简历一页,项目突出重点,自我评价可以删掉的
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务