如何查询最近时间的一条记录

pengxi7799 2010-02-28 11:46:24
表结构
id 设备id 操作时间
1 1 2009-09-09
2 2 2009-09-10
3 1 2010-09-01
4 2 2010-01-01
5 2 2010-01-02


我要通过查询每个设备最近的操作时间获得数据

要求结果

id 设备id 操作时间

3 1 2010-09-01

5 2 2010-01-02

一定要ID号
...全文
481 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingkingzhu 2010-03-01
  • 打赏
  • 举报
回复
3楼正解 回复内容太短了!
vanjayhsu 2010-03-01
  • 打赏
  • 举报
回复
引用 5 楼 small_snowflower 的回复:
select * from tbl(nolock)
where [操作时间] in (SELECT max([操作时间]) from tbl(nolock) group by [设备id])


按楼主的意思,这个查出来应该是符合要求的。若存在一个设备同一天操作两次的情况,则需要增加DISTINCT操作。
select distinct * from tbl
where [操作时间] in (SELECT max([操作时间]) from tbl(nolock) group by [设备id])
xiongjw 2010-03-01
  • 打赏
  • 举报
回复
select * from tab order by time desc
gerrynj 2010-03-01
  • 打赏
  • 举报
回复
引用 5 楼 small_snowflower 的回复:
select * from tbl(nolock)
where [操作时间] in (SELECT max([操作时间]) from tbl(nolock) group by [设备id])

这个对吧
small_snowflower 2010-03-01
  • 打赏
  • 举报
回复
select * from tbl(nolock)
where [操作时间] in (SELECT max([操作时间]) from tbl(nolock) group by [设备id])
vber1010 2010-03-01
  • 打赏
  • 举报
回复
引用 3 楼 vber1010 的回复:
SQL codeselect*from (select t.*,row_number()over(partitionby sbidorderby operdatedesc) numfrom tab t)where num=1

如果最新的记录不是只有一条就将row_number()换成 DENSE_RANK().
vber1010 2010-03-01
  • 打赏
  • 举报
回复

select * from (select t.*,row_number() over(partition by sbid order by operdate desc) num from tab t) where num=1
iqlife 2010-03-01
  • 打赏
  • 举报
回复
要求结果

id 设备id 操作时间

3 1 2010-09-01

5 2 2010-01-02

是这样的结果?应该是下面这个吧
3 1 2010-09-01
4 2 2010-01-01

SELECT * FROM  TAB
WHERE (设备id,操作时间) IN (
SELECT 设备id,min(操作时间) from tab group by 设备id
)
YY_MM_DD 2010-03-01
  • 打赏
  • 举报
回复
up.........
Phoenix_99 2010-03-01
  • 打赏
  • 举报
回复

with temp as(
select 1 id,1 设备id, to_date('2009-09-09','yyyy-mm-dd') 操作时间 from dual
union all
select 2 id,2 设备id, to_date('2009-09-10','yyyy-mm-dd') 操作时间 from dual
union all
select 3 id,1 设备id, to_date('2010-09-01','yyyy-mm-dd') 操作时间 from dual
union all
select 4 id,2 设备id, to_date('2010-01-01','yyyy-mm-dd') 操作时间 from dual
union all
select 5 id,2 设备id, to_date('2010-01-02','yyyy-mm-dd') 操作时间 from dual
)
select max(id) id,设备id,max(操作时间) 操作时间 from temp group by 设备id
心中的彩虹 2010-03-01
  • 打赏
  • 举报
回复

select id,设备id,操作时间,
row_number() over(partition by 设备id orber by 操作时间 desc) rn
from table
where rn=1

select id,设备id,操作时间
from table
where 操作时间 in(select a.操作时间 from(select 设备id,max(操作时间) as 操作时间 from table group by 设备id) a)
版本:presto-server-0.214.tar软件版本 presto-cli-0.214-executableCentOS71、presto的起因 hadoop ---hdfs----MR(java)-----hivehive底层原理用MR,速度比较慢,公司hadoop集群主要集中于晚上到凌晨,平日工作时间负载不是很高。但在工作时间内,公司业务人员有实时查询的需求,现在主要借助于hive提供业务人员的查询。hive是基于MR类的SQL查询工具,他会输入的查询SQL解析为MapReduce,能极大的降低使用大数据门槛,让一般的业务人员可以直接准对大数据进行查询,但是有一个利弊,它的查询基于MR,会让人等待比较着急,等待的时间可能是几个小时或者一天。 spark基于内存提高改良的hive,sql,现在factbook在hive上面开发一套利器,准对hive可以通过sql语句快速查询,presto。2、Facebook为何开发Presto  Facebook的2011的数据仓库存储在少量大型hadoopfs集群,Hive是FaceBook在几年前专门为Hadoop打造的一款数据仓库工具,在以前,facebook的科学家和分析师一直靠hive进行数据分析.但hive使用MR作为底层计算框架,是专为批处理设计的,但是随着数据的不断增多,使用hive进行一个简单的数据查询可能要花费分钟或者几个小时,显然不能满足查询需求,FaceBooke也调研了其他比hive更快的工具,但是他们需要在功能有限的条件下做简单操作,以至于无法操作Facebook庞大的数据要求。2012年开始研究自己的框架--presto,每日可以超过1pb查询,而且速度比较快,faceBook声称Presto的性能比hive要好上10倍或者100倍,presto和hive都是facebook开发的 Presto是一个开源的分布式SQL查询引擎,适用于交互式查询,数据量支持GB到PB字节。Presto的设计和编写完全是为了解决Facebook这样规模的商业数据仓库交互式分析和处理速度的问题Presto可以做什么 Presto支持在线数据查询,包括Hive kafka Cassandra关系数据库以及专门数据存储,一条Presto查询可以将多个数据源进行合并,可以跨越整个组织进行分析。Presto以分析师的需求作为目标,他们期望相应速度小于1秒到几分钟,Presto要么在使用速度的快的昂贵的商业方案,提高内存,要么是消耗大量的硬件进行快速查询。(128G 64G)本套课程教给如何在企业环境中使用Presto技术。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧