之前笔试的SQl题目 求解

#笔试题目#
全部评论
with temp1 as ( -- 对每个用户按登陆日期升序编号,如果是连续登陆的话,登陆日期减去对应编号的结果会是一样的。 select qq_no, ds, row_number() over(partition by qq_no order by ds asc) as date_diff, date_sub(ds, row_number() over(partition by qq_no order by ds asc)) as minus_date from u_wsd.t_od_qidian_pay_hx where year(ds) = 2019 and month(ds) = 8 ), temp2 as ( -- 找出连续登陆天数大于等于4天的用户,并记录下对应编号的最小值和最大值,只要加上去就可以反推回去这段连续登陆 -- 时间的起始和结束日期 select qq_no, minus_date, min(date_diff) as ds_min, max(date_diff) as ds_max from temp1  group by qq_no, minus_date having count(1) >=4 ) select qq_no, date_add(minus_date,ds_min) as start_date, date_add(minus_date,ds_max) as end_date from temp2  ;
点赞 回复 分享
发布于 2019-09-29 17:56

相关推荐

08-27 12:02
已编辑
南京外国语学校 网络安全
再来一遍:实则劝各位不要all in华子,不要相信华为hr
点赞 评论 收藏
分享
10-09 09:19
已编辑
沈阳农业大学 C++
修订
丿南烟丶:个人评价可以删掉 两个项目都是轮子项目,把一个转换成应用型项目,把MySQL和redis用起来 另外项目的时间可以标明一下
最后再改一次简历
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

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