select ID from 表 where TIME between .. and .. group by ID having COUNT(ID) > 3

解决方案 »

  1.   

    抱歉我没有说清楚。是任何一段时间,比如说早上8点到下午8点这12小时中间任何一个ID在任何连续两分钟内出现三次,比如ID001在1212出现一次,1213出现四次。ID003在0921出现一次,0922出现五次。那么这两个ID都要查出来。
      

  2.   

    select distinct id from t a
    where exists(select 1 
                 from t b
                 where time>a.time and time<=a.time+2 
                       and (select count(*) 
                            from t 
                            where time between a.time and b.time )>3
                 )
      

  3.   

    “早上8点到下午8点这12小时中间任何一个ID在任何连续两分钟内出现三次”
    “任何一个ID在任何连续两分钟内出现”
    =========================
    楼主,
    这样的要求,
    痛苦啊,,,
    帮你up,
      

  4.   

    我现在用的方法是:把当天刷卡超过规定次数的全部选出来,然后再判断这些人的这些记录,第一次刷卡和最后一次刷卡时间,如果小于我设定的时间,比如两分钟,那这些人肯定就是的了。关键还有个问题就是,比如我9点钟左右连续恶意刷卡一阵子,到了十点钟再连续恶意刷一阵子,这样的话第一次和最后一次相差就有一个小时了,这种人就会被漏掉了。请高手指点高效率的查询SQL。谢谢。