题解 | #零食类商品中复购率top3高的商品#

零食类商品中复购率top3高的商品

http://www.nowcoder.com/practice/9c175775e7ad4d9da41602d588c5caf3

1.tb1表是为了求出不同的人(uid),在近90天所购买不同商品的次数(product_id) 此处注意要最大日期减去89天才是确切的区间范围,如果减去90天会导致最后一组用例不通过!!!

2.求出商品总的购买人数 并且 左连接 商品购买次数大于二的人数,必须左连,不然商品购买次数没有大于二的数据会缺失!!!

3.求解,ifnull也必须要有,原因是分子可能为null值,即商品购买次数大于2的值可能会null(tips:对at2加ifnull没用,因为count不会出现null值,此处null值是因为第二步的左连接而出现的)

select t3.uid,t1.product_id,count(*) ant
from tb_product_info t1 join tb_order_detail t2 using(product_id) join tb_order_overall t3 using(order_id)
where t1.tag='零食' and t3.event_time between date_sub((select max(event_time) from tb_order_overall),interval 89 day) 
                                         and (select max(event_time) from tb_order_overall) and t3.status=1
group by t3.uid,t1.product_id
)
select T1.product_id id,ifnull(round(T2.at2/T1.at1,3),0) at3
from(
select product_id,count(*) at1
from tb1
group by product_id
)as T1
left join(
select product_id,count(*) at2
from tb1
where ant>=2
group by product_id
)as T2 using(product_id)
order by at3 desc,id asc
limit 3
全部评论

相关推荐

和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务