select id,eventid,time from(
      select id,eventid,time,row_number()over(partition by eventid order by time desc) rm from test
   ) where rm=1;
row_number()over(partition by eventid order by time desc)其中row_number()和order by time desc都明白,就over(partition by eventid 这个不明白,大家帮我说说看,去baidu上google了,也不明白

解决方案 »

  1.   

    分析函数的语法就是这么写的,记住就可以了。
    就像select一定要有from一样。
      

  2.   

    开窗函数的理解:        
    开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:
    over(order by salary) 按照salary排序进行累计,
    order by是个默认的开窗函数
    over(partition by deptno)按照部门分区
    over(order by salary range between 50 preceding and 150 following)每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150
    over(order by salary rows between 50 preceding and 150 following)每行对应的数据窗口是之前50行,之后150行
    over(order by salary rows between unbounded preceding and unbounded following)每行对应的数据窗口是从第一行到最后一行,等效:over(order by salary range between unbounded preceding and unbounded following)
      

  3.   

    partition by eventid order by time desc
    ==========================================
    按 eventid 分组,每组中按 time 排序。
      

  4.   

    按eventid分组http://www.blogjava.net/brock/archive/2007/11/26/163101.html?opt=admin这是分析函数的固定写法
      

  5.   

    建议导我的资源上下载http://hyrongg.download.csdn.net/
    oracle9i 分析函数大全,说得很详细