描述有点小问题,是每一组ip相同的数据,time相差86400秒以上的有多少个,然后再把所有的组累加起来,用一条sql怎样写?

解决方案 »

  1.   

    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
      

  2.   

    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) 
      

  3.   

    我想,LZ的意思,应该是,相邻的同一IP的两条记录的时间,差距在86400秒以上吧。这样的话,楼上的句子,都有问题.在Oracle下面,可以使用LAG函数。假如不需要两条记录相邻的话,做法更加简单。根本不需要用自己来两次连接。
    只要Group By ip,取出最大的和最小的时间,计算它们的差,用在Having上面,就可以了。句子,请自己写。