按楼上描述的需求,用lead函数就行了
select * from(
select t.*,lead(开始时间)over(partition by 号码 order by 编号)-结束时间 time
from table1 t)
where time*24*60*60>10
select * from(
select t.*,lead(开始时间)over(partition by 号码 order by 编号)-结束时间 time
from table1 t)
where time*24*60*60>10
select * from table1 t
where not exists(
select 1 from table1
where 号码=t.号码 and 开始时间-t.结束时间 between 0 and 10/24/3600)
and exists(
select 1 from table1
where 号码=t.号码 and 编号>t.编号)
号码,
被叫号码,
开始时间,
结束时间,
通话时长 from
(
select a.*,
to_number(replace(开始时间,':',''))
- last_value(to_number(replace(结束时间,':',''))) over(partition by 被叫号码 order by 结束时间 ROWS PRECEDING 1 and PRECEDING 1) as 通话间隔1,
first_value(to_number(replace(开始时间,':',''))) over(partition by 被叫号码 order by 开始时间 ROWS 1 FOLLOWING and 1 FOLLOWING)
- to_number(replace(结束时间,':','')) as 通话间隔2
from 通话记录 a
)
where 通话间隔1>=10 or 通话间隔2>=10
alter session set nls_date_formate='yyyy-mm-dd hh24:mi:dd';
create table tb_mumu (
ID number primary key not null,
主叫号码 varchar2(11) not null,
被叫号码 varchar2(11) not null,
通话开始时间 date not null,
通话结束时间 date not null,
通话时长 number not null
);
delete from tb_mumu;
insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (2, 'HPD9JNQOG3C', 'T0HME2XWIBF', '379-4-27', '1-1-1', 6);insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (9, 'YF3 CIJKK4', 'CTAF8Y9PJ6Q', '865-6-20 9:25:9', '1899-9-27 2:18:20', 9);insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (3, 'MFB1KRRH9UP', 'TDHV YJ0I5T', '134-7-9 12:57:4', '280-9-15 6:23:18', 1);insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (0, 'XWI4F7U6RTY', 'LM6T32PAW9B', '1-1-1 0:0:0', '743-4-2 23:49:42', 8);insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (6, 'YLD89T C2N1', '4PTOKP84 1S', '1145-1-11 22:17:42', '500-9-2 17:33:12', 5);insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (1, ' W88KNTPG6P', 'T63I 3FQNI1', '1010-8-31 19:43:4', '848-5-6 20:26:26', 7);insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (5, 'FFXP2KCPKJC', 'E6O9E7JIL4H', '587-4-3 19:5:16', '1078-11-22 22:42:55', 0);insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (4, '47ERHYQB5MG', 'XOW5B5YFY2L', '1599-8-20 0:17:43', '1371-6-17 1:17:59', 2);insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (7, '1OH4X4VN9E1', '2EW0V97QD6L', '1362-11-30 5:44:58', '1531-2-23 11:46:56', 3);insert into tb_mumu (ID, 主叫号码, 被叫号码, 通话开始时间, 通话结束时间, 通话时长) values (8, 'XN4USJ55SG4', 'KFFKLTSLOJC', '1813-06-22 19:38:51', '1741-11-22 14:23:41', 4);
修改下: 将这些数据插入 目前数据插入不了 附加留言请确保正确性然后回帖然后回答问题 O(∩_∩)O哈哈~
(select t.* , px = (select count(1) from tb where 号码 = t.号码 and 开始时间 < t.开始时间) + 1 from tb) m ,
(select t.* , px = (select count(1) from tb where 号码 = t.号码 and 开始时间 < t.开始时间) + 1 from tb) n
where m.号码 = n.号码 and m.px = n.px - 1 and datediff(ss , m.结束时间 , n.开始时间 ) . 10