SQL题目提问

#面经##阿里##sql##算法#SQL题目:
有一张表,包含时间戳和数值两个字段。
要求:
数值为1的所有数据保留;
对于数据为0的那条数据,要判断从[当前时间戳,当前时间戳+10]的数据条数是否只有为1条,如果是则删除该条数据,否则保留该条数据

举例1:
time              result
1695143669    1
1695143703    0
1695143762    1

结果:
time              result
1695143669    1
1695143762    1
解释:
1695143703时刻的数据为0且从[1695143703,1695143713]时刻仅有1条数据,因此删除该条为0的数据

举例2:
time              result
1695145283    0
1695145283    0
1695145284    1
结果:
time              result
1695145283    0
1695145283    0
1695145284    1
解释:
两个同为1695145283时刻的数据为0,但是[1695145283,1695145293]时刻的数据为3条,大于1条,因此保留这两条为0的数据

举例3:
time              result
1695146431    0
1695146683    0
1695146684    1
结果:
time              result
1695146683    0
1695146684    1
解释:
1695146431由于[1695146431,1695146441]时刻内仅有1条数据出现,因此删除该条数据;
1695146683由于[1695146683,1695146693]有2条数据出现,因此保留该条数据;
全部评论
select time ,result from( select time ,result ,lead(time)over(order by time asc) as next_time from t1 ) t1 where result=1 or (result=0 and next_time-time<=10)
2 回复
分享
发布于 2023-09-27 19:18 美国

相关推荐

头像
点赞 评论 收藏
转发
点赞 4 评论
分享
牛客网
牛客企业服务