table表id      time
1       8:11:00
1       8:12:00
1       8:12:55
2       8:12:11
2       8:15:00类似于上面的表数据,我可以使用下面的SQL查询出时间最近的记录
select id, max(time) from table group by id请问除了使用max以外,有什么关键字与group by配合使用可以达到同样的效果?

解决方案 »

  1.   

    rank() 或row_number() over (partition by id order by time desc)select a.id
    from
    (
    select id,row_number() over (partition by id order by time desc) rn
    from 表
    group by id
    ) a
    where a.rn=1
      

  2.   

    rownum
    也行的,不过仅限于取一条纪录,有分组的话,就不能用了
    select *
    from 
    (select * 
         from table 
        order by time desc)
    where rownum=1
      

  3.   

    select id, max(time) keep (dense_rank first order by time) from table
      

  4.   

    还有sum,count函数在使用的时候要用group by的
    二楼的正解
      

  5.   

    group by就是最簡單的啊,樓主為什么要舍近求遠?有什么特殊的需求嗎?
      

  6.   

    是我不记得partition这个关键字了,我是想问出这个关键字,谢谢1楼,谢谢各位支持
      

  7.   


    partition 是分析函数中使用的关键字,建议楼主先看一下分析函数的相关资料。