题解 | 最畅销的SKU

最畅销的SKU

https://www.nowcoder.com/practice/356a64a402864b27a9ab47d0c032756d

# store_info_、store_stock_、sales_daily_
# store_id 、 sku_id
# 连锁门店在每晚库存快照日需要快速评估近 7 天销量与库存覆盖天数(库存 ÷ 近 7 天日均销量),并挑出每家门店近 7 天最畅销的 Top3 SKU 以指导补货
# 门店
# 以最新库存快照日期为统计基准日,计算每家门店在该快照日的 Top3 商品(近 7 天销量排行,统计窗口为"基准日向前 7 天,含基准日")
# 1、找出最新库存快照时间和基准日
with s_date as (
select max(snapshot_date) as last_date,
       date_sub(max(snapshot_date),interval 7 day) as start_date
from store_stock_),
# 2、在日期范围内计算指标
date1 as (
select s.store_id,s.sku_id,
       ifnull(sum(s.qty),0) as last7d_qty,
       round(ifnull(sum(s.qty),0) / 7 ,2) as avg_daily_qty
from sales_daily_ s
join s_date d 
where s.sale_date >= d.start_date and s.sale_date <= d.last_date
group by store_id,s.sku_id),
# 3、计算快照日的库存
max_date as(
select s.store_id,s.sku_id,
       sum(stock_qty) as stock_qty
from store_stock_ s
join s_date d 
where s.snapshot_date = d.last_date
group by store_id,s.sku_id)

select *
from (
select i.store_id,i.store_name,i.city,s.sku_id,
       ifnull(d.last7d_qty,0) as last7d_qty,
       ifnull(d.avg_daily_qty,0) as avg_daily_qty,
       ifnull(m.stock_qty,0) as stock_qty,
       (CASE WHEN ifnull(d.avg_daily_qty,0) > 0 THEN ROUND(ifnull(m.stock_qty,0)/ifnull(d.avg_daily_qty,0), 1) ELSE NULL END) as coverage_days,
       row_number() over(partition by i.store_id order by  ifnull(d.last7d_qty,0) desc,s.sku_id asc) as rank_in_store
from store_info_ i
join store_stock_ s on s.store_id = i.store_id
left join date1 d on i.store_id = d.store_id and s.sku_id =d.sku_id
left join max_date m on i.store_id = m.store_id and s.sku_id =m.sku_id) t 
where rank_in_store <= 3

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:04
点赞 评论 收藏
分享
02-09 16:14
武汉大学 Java
1.&nbsp;问一下本科经历2.&nbsp;介绍一下你第一个项目3.&nbsp;DDD分层架构比传统的MVC有哪些好处?4.&nbsp;你设计的业务分配的算法介绍一下?5.&nbsp;算法有哪些优化思路?6.&nbsp;动态标签列设计怎么思考的?7.&nbsp;数据量有多大?8.&nbsp;数据量很大的话,数据存储怎么优化?9.&nbsp;如何保证缓存和数据库之间的数据一致性?10.&nbsp;相对于你这个项目用哪种方案?11.&nbsp;项目中遇到的最大的困难是什么?12.&nbsp;介绍一下第二个项目13.&nbsp;模型分析diff的上下文怎么考虑?14.&nbsp;如果diff的关联的上下文很长超过token,你会怎么办?15.&nbsp;你想的这种方案,最后输入给模型的prompt是什么?16.&nbsp;对于大模型的其他组件如RAG和skills有了解吗?17.&nbsp;那你有想过把代码拆分成一些知识库放在rag里面吗?18.&nbsp;有对比过其他模型的分析效果吗?19.&nbsp;golang有了解吗?20.&nbsp;HashMap的底层结构21.&nbsp;为什么要用红黑树?22.&nbsp;红黑树增删的时间复杂度?23.&nbsp;MySQL事务隔离级别24.&nbsp;MVCC实现原理25.&nbsp;手撕算法:lc402&nbsp;移掉k位数字&nbsp;-&gt;&nbsp;没想到单调栈,暴力枚举了QAQ反问面试官之后,感觉我的缺点主要在于项目太过于玩具了,对于高并发什么的思考处于比较浅的地步,还有就是code-review对于call&nbsp;graph还有一些成熟的方案不怎么了解过,相当于纯demo,面过几场才知道QAQ,估计是没啥希望了,继续沉淀了噶人们
查看25道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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