SQL> select * from (
  2  select name,rank() over(partition by name order by date desc) rk,date,amount
  3  from tablename
  4  )
  5  where rk<=1
  6  /

解决方案 »

  1.   

    select * from 
    (
    select name,row_number() over(partition by name order by date desc nulls last) rn,date,amount from tablename
    )
    where rn<=1
      

  2.   

    rank() row_number() over() partition by name 
    都是我从未见过的东西,能帮解释一下吗?谢谢!
      

  3.   

    分析函数 语法:
    function_name--函数名
    (<arguement>,<arguement1>......)--分析函数的参数
    OVER--标识分析函数
    (<partition-clause>--可选的分区子句
    <order-by-clause>)--排序子句
    具体rank函数与row_number函数,可以在具体介绍分析函数的资料中去看看select * from table where (name,date)in
    (
    select name,max(date) from table group by name)
      

  4.   

    rank()是排序
    over() partition by name 是根据名字分组排序