现在有一张表的数据是这样子的
 
     dz       time                    data
    北京  2011-10-12 23:58            78
    北京  2011-10-12 23:50            78
    广州  2011-10-12 23:53            733
    广州  2011-10-12 23:57            783
    北京  2011-10-11 23:59            80
    北京  2011-10-11 23:50            78
    广州  2011-10-11 23:30            733
    广州  2011-10-11 23:45            45现在需要查询出某个城市 每天时间最大的一条记录,(也就是说最接近凌晨的一条记录),如查询出北京的数据如下格式    dz         time                    data
   北京    2011-10-12 23:58             78
   北京    2011-10-11 23:59             80
请大家帮帮忙,谢谢啦

解决方案 »

  1.   

    用row_number实现比较方便,性能也不差  SELECT   dz, time, data
        FROM   (SELECT   dz,
                         time,
                         data,
                         ROW_NUMBER ()
                            OVER (PARTITION BY dz, TRUNC (time, 'dd')
                                  ORDER BY time DESC)
                            rn
                  FROM   table_name)
       WHERE   rn = 1
    ORDER BY   dz, time --不需要就去掉
      

  2.   

    --如果你的time , data是两个字段
    select t.dz , t.time , max(date) date from tb t where dz = '北京' group by t.dz , t.time--如果你的time,data是一个字段,假设是time
    select t.dz , max(time) time from tb t where dz = '北京' group by t.dz , to_char(t.time,'YYYY-MM-DD')
      

  3.   

    select dz,
           time,
           data
    from tb
    where time in(select max(time)
                  from tb
                  where dz = 'beijing')
    ;
        
      

  4.   

    tb是你的table名字 beijing你可以改成你要选择的城市
      

  5.   


    select t.dz , t.time , max(date) date from tb t where dz = '北京' group by t.dz , t.time