题解 | #某宝店铺连续2天及以上购物的用户及其对应的天数#

某宝店铺连续2天及以上购物的用户及其对应的天数

http://www.nowcoder.com/practice/63ac3be0e4b44cce8dd2619d2236c3bf

  • emmm更新一下,看了一下别人的题解发现自己做的有问题,t表那里是okk的,但是后面筛选大于两天天数出了问题,原因就在忽略了连续这个条件,因此在别人题解的基础上进行了更新,主要就是用到了date_sub函数
  • 这道题也是比较常规的做法,主要难点应该也就是窗口函数的使用了吧,但是用熟练了就还好
  1. 首先,建立一个t表,有sales_date,user_id,还有就是在group by sales_date,user_id之后利用窗口函数统计用户购买天数
  2. 在t表基础上,筛选出用户id以及天数大于两天的t1表
  3. 为了避免用户重复,我们要在t1表的基础上再筛选出天数最大的。

正确如下:

with t as (select 
	sales_date,
    user_id,
    count(sales_date) over (partition by user_id order by sales_date) as diff
from sales_tb
group by sales_date,user_id)

select 
	user_id,
    count(*) as days_count
from t
group by user_id,date_sub(sales_date,interval diff day)#这里利用date_sub函数来连续!也可以用date_add
having days_count>=2
order by user_id


大半部分错误代码:虽然通过了

with t as (select 
	sales_date,
    user_id,
    count(sales_date) over (partition by user_id order by sales_date) as diff
from sales_tb
group by sales_date,user_id)

select
	user_id,
    max(days_count) as days_count#忽略了连续的条件,达咩
from(
select 
	user_id,
    diff as days_count
from t
where diff>=2
)t1
group by user_id
order by user_id
全部评论

相关推荐

点赞 评论 收藏
分享
01-17 12:35
吉首大学 Java
秋招之BrianGriffin:自己的工作自己做!😡
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务