A B C D Time
abraham         abraham         123456 654321 2010-6-26 5:11
abraham         abuse           123456 654321 2010-6-26 5:11
abraham         access          123456 654321 2010-6-26 5:11
abraham         account         123456 654321 2010-6-26 5:11
abraham         accounts        123456 654321 2010-6-26 5:11
abraham         adam            123456 654321 2010-6-26 5:11
abraham         adm             123456 654321 2010-6-26 5:11
abraham         admin2          123456 654321 2010-6-26 5:11
abraham         admin           123456 654321 2010-6-26 5:11
abraham         adrian          123456 654321 2010-6-26 5:11
aerial          aerial          123456 654321 2010-6-26 5:11
agent           agent           123456 654321 2010-6-26 5:12
alan            alan            123456 654321 2010-6-26 5:12
abraham         albert          123456 654321 2010-6-26 5:12
alberto         alberto         123456 654321 2010-6-26 5:12
abraham         alfonso         123456 654321 2010-6-26 5:13
alfred          alfred          123456 654321 2010-6-26 5:13
alice           alice           123456 654321 2010-6-26 5:13
alicia          alicia          123456 654321 2010-6-26 5:13
alison          alison          123456 654321 2010-6-26 5:13
allen           allen           123456 654321 2010-6-26 5:14
allie           allie           123456 654321 2010-6-26 5:14
allie           alpha           123456 654321 2010-6-26 5:14
allie           alvin           123456 654321 2010-6-26 5:14
allie           amelia          123456 654321 2010-6-26 5:14
allie           alyssa          123456 654321 2010-6-26 5:14
allie           amanda          123456 654321 2010-6-26 5:14
andre           andre           223457 654321 2010-6-26 5:15
anderson        anderson        223458 654321 2010-6-26 5:15
andreea         andreea         223459 654321 2010-6-26 5:15如上段数据,在很短的两分钟内,很多字段的A相同,B不同,我想挑出这些数据,谢谢。
规则可以按照: 两分钟内出现了对于相同的A,出现5个以上的不同B的所有数据。
谢谢。

解决方案 »

  1.   

    select * 
    from tablename
    where (a,b) in
    (select a,b
    from tablename
    group by a,b
    having count(*)>5
    )
      

  2.   


    这句只能找出 对于相同的A,出现5个以上的B值的数据。 不能体现5个以上不同B值的数据
      

  3.   

    1:测试数据:
    select * from tb11;
    A B TIME C D
    abraham abraham 2010-06-26 05:11:00 654321 123456
    abraham abuse 2010-06-26 05:11:00 654321 123456
    abraham access 2010-06-26 05:11:00 654321 123456
    abraham account 2010-06-26 05:11:00 654321 123456
    abraham account 2010-06-26 05:11:00 654321 123456
    abraham adm 2010-06-26 05:11:00 654321 123456
    abraham adm 2010-06-26 05:11:00 654321 123456
    abraham admin 2010-06-26 05:11:00 654321 123456
    abraham admin 2010-06-26 05:11:00 654321 123456
    abraham adrian 2010-06-26 05:11:00 654321 123456
    aerial aerial 2010-06-26 05:11:00 654321 123456
    agent agent 2010-06-26 05:12:00 654321 123456
    alan alan 2010-06-26 05:12:00 654321 123456
    abraham albert  2010-06-26 05:12:00 123456 123456
    alberto alberto 2010-06-26 05:12:00 123456 123456
    abraham albert 2010-06-26 05:12:00 654321 123456
    alberto alberto 2010-06-26 05:12:00 654321 123456
    abraham alfonso 2010-06-26 05:13:00 654321 123456select ta.* from 
    (select a,b,c,d,time,decode(mod((time-bs)*24*60,2),0,(time-bs)*24*60/2+1,floor((time-bs)*24*60/2+1)) as cnt
                from tb11,(select min(time) as bs from tb11) t) ta
    where (ta.a,ta.cnt) in (
        --求出2分钟内A同,B不同并且B有5种以上的记录,
        select a,cnt from 
        (    --求出2分钟内不重复记录
            select distinct a,b,cnt
            from(
            --所有记录按2分钟进行分组
                select a,b,time,decode(mod((time-bs)*24*60,2),0,(time-bs)*24*60/2+1,floor((time-bs)*24*60/2+1)) as cnt
                from tb11,(select min(time) as bs from tb11) t
             )
        )
        group by a,cnt
        having count(b)>5
    )结果:
    A B C D TIME CNT
    abraham abraham 654321 123456 2010-06-26 05:11:00 1
    abraham abuse 654321 123456 2010-06-26 05:11:00 1
    abraham access 654321 123456 2010-06-26 05:11:00 1
    abraham account 654321 123456 2010-06-26 05:11:00 1
    abraham account 654321 123456 2010-06-26 05:11:00 1
    abraham adm 654321 123456 2010-06-26 05:11:00 1
    abraham adm 654321 123456 2010-06-26 05:11:00 1
    abraham albert  123456 123456 2010-06-26 05:12:00 1
    abraham albert 654321 123456 2010-06-26 05:12:00 1
    abraham admin 654321 123456 2010-06-26 05:11:00 1
    abraham admin 654321 123456 2010-06-26 05:11:00 1
    abraham adrian 654321 123456 2010-06-26 05:11:00 1
    allie allie 654321 123456 2010-06-26 05:14:00 2
    allie alpha 654321 123456 2010-06-26 05:14:00 2
    allie alvin 654321 123456 2010-06-26 05:14:00 2
    allie amelia 654321 123456 2010-06-26 05:14:00 2
    allie alyssa 654321 123456 2010-06-26 05:14:00 2
    allie amanda 654321 123456 2010-06-26 05:14:00 2