SQL | 查找连续三次出现的记录

本文详细介绍了一个使用SQL窗口函数处理重复ID并进行时间序列分析的实际案例。通过创建表格、插入数据和应用窗口函数,展示了如何筛选特定条件下的数据记录。此案例对于理解窗口函数在数据处理中的应用具有很高的参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

create table table1
(
  Id char(10),
  dt datetime
  );

insert into table1 values(1,'2020-07-01 00:00:00');
insert into table1 values(2,'2020-07-01 00:00:01');
insert into table1 values(3,'2020-07-01 00:00:02');
insert into table1 values(3,'2020-07-01 00:00:03');
insert into table1 values(3,'2020-07-01 00:00:04');
insert into table1 values(3,'2020-07-01 00:00:05');
insert into table1 values(2,'2020-07-01 00:00:06');
insert into table1 values(2,'2020-07-01 00:00:07');
insert into table1 values(4,'2020-07-01 00:00:08');
insert into table1 values(4,'2020-07-01 00:00:09');
insert into table1 values(5,'2020-07-01 00:00:10');
insert into table1 values(5,'2020-07-01 00:00:11');
insert into table1 values(5,'2020-07-01 00:00:12');

#建立辅助列
#应用窗口函数
SELECT * from table1 where Id in (
SELECT distinct id_1 from
(select row_number()over(order by dt) as dt_id_1,Id Id_1,dt dt_1
from table1) a
left join (select row_number()over(order by dt)+2 as dt_id_2,Id Id_2,dt dt_2 
from table1) b 
on a.dt_id_1 = b.dt_id_2
where Id_1 = Id_2)
order by Id,dt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值