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条数据出现,因此保留该条数据;
有一张表,包含时间戳和数值两个字段。
要求:
数值为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)
相关推荐