新手请教一个oracle时间筛选的问题?

辣椒炒肉plus 2017-12-19 12:00:12
我的问题是这样的:
一张表有三个字段:A(id)、B(时间)、C(内容)
数据类型这样:
1 2013-07-17 18:01:56 数据1
2 2013-07-17 18:06:58 数据2
3 2013-07-17 18:11:59 数据3
后面还有很多。。。
我现在需要查询到字段B的时间精确到小时,且是这个小时内最小的时间的数据,应该怎么查,sql应该怎么写?

试过mysql这样写:select * from table group by year(B),month(B),day(B),hour(B) order by B desc;
好像能查出来,至于是不是一个小时内最小的一条就不清楚了。oracle 怎么试都不行,求大牛帮忙。

...全文
972 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

select p1.id,p1.tag_dtm,p1.pl1
     from (select id,tag_dtm,row_number()over(partition by trunc(tag_dtm) order by tag_dtm) rn
from jchbsj) p1 where p1.rn =1
碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
SQL实现如下:

select a,b,c 
     from (select a,b,c,row_number()over(partition by substr(b,1,13) order by b) rn
from 表名称) where rn =1
碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
很简单的问题,字段B是什么类型?
碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
引用 5 楼 qq_24298727的回复:
查询的数据不对,时间精确到小时,一天应该只有24条,每个小时现在有多条,但只需要取最小的那一条。

根本不可能有这种情况。
碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
引用 13 楼 qq_24298727的回复:
哦,不好意思,刚才没明白您的意思,我又试了下,在带上时间的情况下,查询是没有问题的, 但是,我需要查询所有的数据。会把这写筛选后的数据,存在另外一张表查询,这样可以少查询几十万条。
查询一天的数据没有问题,查询所有的数据就没问题了。
辣椒炒肉plus 2017-12-19
  • 打赏
  • 举报
回复
哦,不好意思,刚才没明白您的意思,我又试了下,在带上时间的情况下,查询是没有问题的, 但是,我需要查询所有的数据。会把这写筛选后的数据,存在另外一张表查询,这样可以少查询几十万条。
碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
为什么偏偏一次性查5-6年的数据呢?
碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
你能用我的SQL查2017-12-14这一天的数据吗? 加个时间条件,SQL不会改了?
辣椒炒肉plus 2017-12-19
  • 打赏
  • 举报
回复
您写的不对呀?我按照您写的查出来的数据不对。第一张截图就是按照您说的方法查的?
碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
你自己的问题吧,为什么不用我的SQL查数据?
辣椒炒肉plus 2017-12-19
  • 打赏
  • 举报
回复
这是一段数据
碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
查问题的时候不要一次性查5-6年的数据,你先看一天的数据。
碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
哪一个小时的数据有多条?把图发出来。
辣椒炒肉plus 2017-12-19
  • 打赏
  • 举报
回复
查询的数据不对,时间精确到小时,一天应该只有24条,每个小时现在有多条,但只需要取最小的那一条。



碧水幽幽泉 2017-12-19
  • 打赏
  • 举报
回复
引用 3 楼 qq_24298727的回复:
时间字段B是date类型
我写的SQL是通用的。 适合date和varchar2类型。
辣椒炒肉plus 2017-12-19
  • 打赏
  • 举报
回复
时间字段B是date类型

1,617

社区成员

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

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