select count(a.id) from 表名 a WHERE a.aid in (SELECT aid FROM 表名 b WHERE a.time-b.time>86400 ) UNION select count(distinct a.id) FROM 表名 a,表名 b WHERE a.time-b.time>86400
select count(a.id) from 表名 as a WHERE a.aid in (SELECT aid FROM 表名 as b WHERE a.time-b.time> 86400 and a.ipaddress=b.ipaddress)
我想,LZ的意思,应该是,相邻的同一IP的两条记录的时间,差距在86400秒以上吧。这样的话,楼上的句子,都有问题.在Oracle下面,可以使用LAG函数。假如不需要两条记录相邻的话,做法更加简单。根本不需要用自己来两次连接。 只要Group By ip,取出最大的和最小的时间,计算它们的差,用在Having上面,就可以了。句子,请自己写。
(SELECT aid FROM 表名 b WHERE a.time-b.time>86400 )
UNION select count(distinct a.id) FROM 表名 a,表名 b WHERE a.time-b.time>86400
(SELECT aid FROM 表名 as b WHERE a.time-b.time> 86400 and a.ipaddress=b.ipaddress)
只要Group By ip,取出最大的和最小的时间,计算它们的差,用在Having上面,就可以了。句子,请自己写。