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