日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle每小时分组查询,Oracle 天内按小时分组查询有关问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Oracle 天內(nèi)按小時(shí)分組查詢問題

本帖最后由 hao123yao 于 2013-03-08 11:30:56 編輯

表名c_data_01。表結(jié)構(gòu):

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可以唯一確定一條數(shù)據(jù)。c_id大概有1萬,c_time為時(shí)間格式。每個(gè)c_id大概每半分鐘就有一條數(shù)據(jù),時(shí)間無規(guī)律。數(shù)據(jù)量是有點(diǎn)大,已使用分區(qū)表(先以c_time天分區(qū),再對(duì)c_id進(jìn)行哈希分區(qū))。a、b、c等為其它不重要字段。

問題一:

給定一個(gè)c_id和一個(gè)日期,查出該天內(nèi)每個(gè)小時(shí)內(nèi)的一條數(shù)據(jù),即共有24條數(shù)據(jù),每個(gè)小時(shí)一條。該條數(shù)據(jù)可以是小時(shí)內(nèi)的隨機(jī)數(shù)據(jù),也可以是小時(shí)內(nèi)最大時(shí)間對(duì)應(yīng)的數(shù)據(jù)。

下面的語句是查詢最大時(shí)間的,但速度有點(diǎn)慢。能否不用最大時(shí)間或者有沒有更好查詢的方法?

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條數(shù)據(jù),速度還好。但又不能保證每小時(shí)有一條數(shù)據(jù)。

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?

問題二:

如果要將每個(gè)c_id每個(gè)小時(shí)取出一條數(shù)據(jù)(無要求、隨機(jī)什么的都可以)放入另外一張p_data表中。

若用最大時(shí)間或隨機(jī)取數(shù)據(jù),同樣的問題,效率太低。有沒有改進(jìn)的方法或者其他更好的辦法?

/*小時(shí)內(nèi)最大時(shí)間*/

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')

總結(jié)

以上是生活随笔為你收集整理的oracle每小时分组查询,Oracle 天内按小时分组查询有关问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。