Oracle 天内按小时分组查询问题

本帖最后由 hao123yao 于 2013-03-08 11:30:56 编辑

表名c_data_01。表结构:

uuid   c_id      c_time                  a         b        c

1      0001      2013-3-6 00:01:00   1      1     1

2      0002      2013-3-6 00:00:00   1      1     1

3      0001      2013-3-6 00:01:30   1      1     1

4      0002      2013-3-6 00:01:35   1      1     1

其中uuid为主键,自增。c_id和c_time可以唯一确定一条数据。c_id大概有1万,c_time为时间格式。每个c_id大概每半分钟就有一条数据,时间无规律。数据量是有点大,已使用分区表(先以c_time天分区,再对c_id进行哈希分区)。a、b、c等为其它不重要字段。

问题一:

给定一个c_id和一个日期,查出该天内每个小时内的一条数据,即共有24条数据,每个小时一条。该条数据可以是小时内的随机数据,也可以是小时内最大时间对应的数据。

下面的语句是查询最大时间的,但速度有点慢。能否不用最大时间或者有没有更好查询的方法?

select *

from c_data_01

where c_id = '0001'

and c_time in

(select max(collect_time)

from c_data_01

where c_id = '0001'

and c_time >=

to_date('2013-3-6 00:00:00', 'yyyy-mm-dd hh24:mi:ss')

and c_time<

to_date('2013-3-7 00:00:00', 'yyyy-mm-dd hh24:mi:ss')

group by trunc(c_time , 'hh24'))

直接选取24条数据,速度还好。但又不能保证每小时有一条数据。

select *

from c_data_01

where c_id = '0001'

and c_time >=

to_date('2013-3-6 00:00:00', 'yyyy-mm-dd hh24:mi:ss')

and c_time<

to_date('2013-3-7 00:00:00', 'yyyy-mm-dd hh24:mi:ss')

and rownum

问题二:

如果要将每个c_id每个小时取出一条数据(无要求、随机什么的都可以)放入另外一张p_data表中。

若用最大时间或随机取数据,同样的问题,效率太低。有没有改进的方法或者其他更好的办法?

/*小时内最大时间*/

insert into p_data

select a1.c_id,a1.c_time,a1.a,a1.b,a1.c

from c_data_01 a1,

(select c_id, max(c_time) c_time

from c_data_01

where c_time >=

to_date('2013-3-6 00:00:00', 'yyyy-mm-dd hh24:mi:ss')

and c_time <

to_date('2013-3-7 00:00:00', 'yyyy-mm-dd hh24:mi:ss')

oracle每小时分组查询,Oracle 天内按小时分组查询有关问题相关推荐

  1. mysql查询一周内数据并分组_mysql 统计本周7天的数据并分组

    今天写到项目的一个数据展示模块,最终要呈现的效果是用柱状图显示本周七天的访客数量,所以要给前端本周7天的数据 比如今天是周二(实际上也是),我们要给前端周一周二的数据,后面周三到周日因为还没到,数据置 ...

  2. Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 在对数据查询或菜单时经常要对指定的时间或时间段进行查询,例如要查询一天内的信息,要查询一周内的信息, ...

  3. oracle关联分组查询,oracle中关联查询、分组查询

    高级查询 1.关联查询 作用:可以跨越多表查询 --查询出员工的名字和他所在部门的的名字 //古老的写法 select first_name,name from s_emp,s_dept where ...

  4. 318分组聚合,关联查询(多表连接查询)(连接查询),连接查询oracle写法,集合运算ld

    ----------分组聚合:对表里面的数据进行各个维度/角度的统计 -------------统计:需要用 聚合函数 max(目标字段):求最大值 min(目标字段) :求最小值 avg(目标字段) ...

  5. oracle 分组 排名,Oracle数据库之分组查询及排序

    分组查询:使用 group by 来设置分组,把该列具有相同值的多条记录当成一组记录来处理,然后只会输出一条记录,得到的结果会默认使用升序的方式进行排列. 规则: (1)如果使用了分组函数,或者是 g ...

  6. oracle统计每日归档大小,Oracle查询最近几天每小时归档日志产生数量的脚本写法...

    下面给大家分享Oracle查询最近几天每小时归档日志产生数量的脚本写法,脚本如下所示: SELECT SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1 ...

  7. oracle数据库怎么分组查询,oracle数据库之分组查询

    本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1  多表查询2)而在 ...

  8. Oracle 语言分类 数据类型 数据类型转换 常用函数 集合操作 子查询

    SQL分类 SQL(Structure Query Language)语言是数据库的核心语言.SQL语言共分为四大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL.1 ...

  9. oracle取每日固定时间,Oracle查询每天固定时间段的数据

    select * from GPS_LOG t where to_char(t.gps_time,'hh24:mm:ss')>='15:30:00'and to_char(t.gps_time, ...

最新文章

  1. python监听文件更改记录_如何用机器人监听老板微信?
  2. 增强.net开发的5个非常有用的Visual Studio 2012扩展
  3. 关于VS2005中的Code Snippets Manager的问题及解决
  4. java组件代码_[java]常用组件
  5. 编译C程序提示之'for' loop initial declaration used outside C99 mode
  6. js含有特定文字不能跳转
  7. 多对一(一对多)的双向关联
  8. @Inject.@Resource.@Autowired 的区别
  9. 自定义 View 实现汉字笔顺动画
  10. 逆clarke变换_克拉克(CLARKE)和帕克(PARK)变换
  11. oracle10.2.0.4 dbca,10.2.0.4 DBCA problem :Error securing Database Control,...
  12. 【绕口令】打南边来了个喇嘛(转载)
  13. 【lomoyi笔记】2020.7.31VMware虚拟机安装黑苹果macOS Catalina10.15
  14. Linux中的preempt_count
  15. python精彩语句(来日方长,慢慢录入)
  16. 无法定位程序输入点 getHostNameW 于动态链接库 WS2_32.dll
  17. r语言remarkdown展示图_十个超级好用的R语言编程技巧,一般人绝不知道!
  18. JAVA计算机毕业设计校园订餐系统(附源码、数据库)
  19. 使用码云和博客园学习简易教程
  20. STLINk驱动安装

热门文章

  1. 在Windows下搭建SVN服务器并且集成到 Eclipse 开发环境中
  2. 艾伟_转载:ASP.NET MVC数据验证
  3. 说说计算机发展史在你的印象里都有哪些内容,鱼池宣讲 | 专题采访 第二期 | 过去的一年里,你印象深刻的事情有哪些?...
  4. python的函数的对象属性_Python帮助函数调试函数 用于获取对象的属性及属性值...
  5. 【ABAP】如何判断单据是否被锁定
  6. ABAP--如何快速从BSEG读取数据
  7. FD32 查询客户信贷管理中,销售值是怎么来的?
  8. Oracle的一点注意点
  9. 预留在PP模块里面的作用
  10. CL_GUI_ALV_GRID 取消右鍵功能