本帖最后由 cncmaxcnc 于 2011-04-30 14:19:44 编辑

解决方案 »

  1.   

    select * from (
    select ci,msisdn,count,row_number()over(partition by msisdn order by count) rn from tb)
    where rn=1;
      

  2.   

    select * from (
    select ci,msisdn,count,row_number()over(partition by msisdn order by count desc) rn from tb)
    where rn=1;
      

  3.   


    with t as(
         select '18802' ci,'13009060195' msisdn,9 cnt from dual union all
         select '18830','13009060195',1 from dual union all
         select '18837','13009060195',2 from dual union all
         select '18829','13009063333',5 from dual union all
         select '18830','13009063333',7 from dual union all
         select '18847','13009063333',4 from dual)
    select t.*
    from t,(
         select msisdn,max(cnt) cnt
         from t
         group by msisdn
         ) b
    where t.msisdn=b.msisdn and 
          t.cnt=b.cnt;
      
    CI    MSISDN             CNT
    ----- ----------- ----------
    18802 13009060195          9
    18830 13009063333          7