当前位置: 代码迷 >> Oracle开发 >> 请问一sql语句的写法
  详细解决方案

请问一sql语句的写法

热度:38   发布时间:2016-04-24 06:52:09.0
请教一sql语句的写法
我有一个数据表,格式如下,每个senid的发送时间不是相同的。

dataId    senid    senValue       time
*****       1         100        3:45:00
*****       1         100        3:40:00
*****       1         100        3:35:00
*****       1         100        3:30:00
*****       2         2000       3:45:00
*****       2         2000       3:44:00
*****       2         2000       3:43:00
*****       2         2000       3:42:00
*****       3         300        3:44:50
*****       3         300        3:44:40
*****       3         300        3:44:30
*****       3         300        3:44:20

要查找每个 senid 的最新数据,得到的结果应该如下所示
senid   senValue   time
1         100      3:45:00
2         2000     3:45:00
3         300      3:44:50

就是这样,查找出来每个senid的最新数据和时间。请问这个sql语句应该怎么写比较好?


oracle sql

------解决方案--------------------

with t as 
(
select  1 sendid, 100 sendv, '3:45:00' sendt from dual
union all
select  1 sendid, 100 sendv, '3:40:00' sendt from dual
union all
select  2 sendid, 200 sendv, '3:45:00' sendt from dual
union all
select  2 sendid, 200 sendv, '3:40:00' sendt from dual
union all
select  3 sendid, 300 sendv, '3:45:50' sendt from dual
union all
select  3 sendid, 300 sendv, '3:45:40' sendt from dual
)
select sendid,sendv, max(sendt) from t group by  sendid, sendv

不知道楼主到底什么意思,是不是太简单了。。。我理解错了
------解决方案--------------------
如果 senid  对应的 sendv 都是相同的,那楼上的方法直接求 sendt的max就可以。如果不同。
select sendid, max(sendt),max(sendv)keep(dense_rank first order by sendt desc ) sendt from t group by  sendid

------解决方案--------------------

with t as
 (select 1 sendid, 100 sendv, '3:45:00' sendt
    from dual
  union all
  select 1 sendid, 100 sendv, '3:40:00' sendt
    from dual
  union all
  select 2 sendid, 200 sendv, '3:45:00' sendt
    from dual
  union all
  select 2 sendid, 200 sendv, '3:40:00' sendt
    from dual
  union all
  select 3 sendid, 300 sendv, '3:45:50' sendt
    from dual
  union all
  select 3 sendid, 300 sendv, '3:45:40' sendt from dual)
select sendid, sendv, sendt
  相关解决方案