有表结构如下
DATE PERIOD MSC_ID 掉话率
071018 14001500 CHAMSC
071018 15001600 CHAMSC 0.35
071018 16001700 CHAMSC 0.33
071018 17001800 CHAMSC 0.35
071018 18001900 CHAMSC 0.42
071018 19002000 CHAMSC 0.43
071018 21002200 CHAMSC 0.44
071018 22002300 CHAMSC 0.54
071018 23002400 CHAMSC 0.54
071019 01000200 CHAMSC 0.5
071019 02000300 CHAMSC 0.57
071019 03000400 CHAMSC 0.47
071019 04000500 CHAMSC 0.55
071019 05000600 CHAMSC 0.44
071019 06000700 CHAMSC 0.58
071019 07000800 CHAMSC 0.53
071019 08000900 CHAMSC 0.43
071019 09001000 CHAMSC 0.33
071019 10001100 CHAMSC 0.32
071019 12001300 CHAMSC 0.33
071019 13001400 CHAMSC 0.36
071019 14001500 CHAMSC 0.36
我想得到每天掉活率的最大值的记录
期望结果如下:
071018 22002300 CHAMSC 0.54
071018 23002400 CHAMSC 0.54
071019 06000700 CHAMSC 0.58
请问这个sql语句如何写,在oracle中
谢谢!

解决方案 »

  1.   

    select * 
    from table1 a, (select DATE ,max(掉话率) 掉话率  from table1 group by date  ) b
    where a.date(+) = b.date and a.掉话率(+) = b.掉话率;
      

  2.   

    select DATE,PERIOD,max(掉话率) 掉话率 from 表名 group by DATE,PERIOD
    看符合要求不?
      

  3.   

    刚才掉了个字段MSC_ID,楼主给加上哦
      

  4.   

    select *
      from (  
            select tt.*,
                   dense_rank() over(partition by tt.date,tt.MSC_ID order by 掉话率 desc NULLS LAST) dr
              from tablename tt
           )yy
     where dr = 1;
      

  5.   

              select date,PERIOD,MSC_ID,掉话率 
              from testtable a 
              where a.掉话率 in 
                           (select max(掉话率) 
                            from testtable b 
                            where a.date = b.date 
                            group by date)
      

  6.   

    谢谢!如果我是
    想得到
    071019 06000700 CHAMSC 0.58 
    和在071018条件下取得的最大值中的任何一条怎么写了
    结果如:
    071018 23002400 CHAMSC 0.54 
    071019 06000700 CHAMSC 0.58 
    或者
    071018 22002300 CHAMSC 0.54 
    071019 06000700 CHAMSC 0.58 
      

  7.   

    select * 
      from (   
            select tt.*, 
                   row_number() over(partition by tt.date,tt.PERIOD order by 掉话率 desc NULLS LAST) dr 
              from tablename tt 
           )yy 
     where dr=1; 
      

  8.   

    select * from table1 a where a.掉话率 in (select max(b.掉话率) from table1 b where a.date = b.date);