日期:2014-05-18  浏览次数:20664 次

用sql查询如下要求的数据如何写代码
有如下数据,C列为时间单位为秒,现想找出相差三秒中内A中同个数据出现三次的记录数。可能A列中相同的数据很多,但是只要C列中数值相差三秒钟内包含三秒的情况下,A列相同数据出现三次,将这三次的数据找出来即可,之前我也发帖过,但是问题弄错,谢谢大家
A B C(秒)
123 222 23
223 221 23
223 256 26
123 22 27
123 126 29
223 225 558
223 256 25
123 223 30
通过查找结果为:
A B C(秒)
223 221 23
223 256 26
123 22 27
123 126 29
223 256 25
123 223 30
请问sql查询如何书写,谢谢大家


------解决方案--------------------
SQL code
create table tb(A int,B int,C int)
insert into tb select 123,222,23
insert into tb select 223,221,23
insert into tb select 223,256,26
insert into tb select 123,22,27
insert into tb select 123,126,29
insert into tb select 223,225,558
insert into tb select 223,256,25
insert into tb select 123,223,30
go
select a.* from tb a inner join(
select * 
from tb a 
where exists(select 1 from tb where a=a.a and c<>a.c and c-a.c between 1 and 3)
and exists(select 1 from tb where a=a.a and c<>a.c and a.c-c between 1 and 3)
)b on a.a=b.a and abs(a.c-b.c)<=3
/*
A           B           C
----------- ----------- -----------
123         22          27
123         126         29
123         223         30
223         221         23
223         256         26
223         256         25

(6 行受影响)

*/
go
drop table tb

------解决方案--------------------
没赶上
------解决方案--------------------
SQL code
create table tb(A int,B int,C int)
insert into tb select 123,222,23
insert into tb select 223,221,23
insert into tb select 223,256,26
insert into tb select 123,22,27
insert into tb select 123,126,29
insert into tb select 223,225,558
insert into tb select 223,256,25
insert into tb select 123,223,30
go
select a.* from tb a inner join(
select a,c 
from tb t
where exists(select 1 from tb where a=t.a and c<>t.c and c-t.c between 0 and 3 group by a having count(*)=2)
)b on a.a=b.a and a.c-b.c between 0 and 3
/*
A           B           C
----------- ----------- -----------
123         22          27
123         126         29
123         223         30
223         221         23
223         256         26
223         256         25

(6 行受影响)

*/
go
drop table tb