如何从oracle数据库中逐时取数

vxf3dgd4  于 2023-04-20  发布在  Oracle
关注(0)|答案(4)|浏览(125)

我有一个表在我的数据库说mytable,其中的内容来自其他来源的请求。有一个列在这个表中的时间,其中存储的日期和时间(例如2010/07/10 01:21:43)时,请求被接收。现在我想从这个表中获取的数据在每小时的基础上为每一天。这意味着我想计数的请求数据库接收在每一个小时的一天。例如1点到2点说计数是50..像这样..我会运行这个查询在一天结束时。所以我会得到一天组中收到的请求每小时。
有人能帮我吗。

我的数据库很大,所以我想用更少的时间来获取数据。

任何其他方式比OMG小马回答。

djp7away

djp7away1#

使用TO_CHAR function来格式化DATETIME列,以便您可以将其GROUP BY用于聚合函数:

SELECT TO_CHAR(t.time, 'YYYY-MM-DD HH24') AS hourly,
         COUNT(*) AS numPerHour
    FROM YOUR_TABLE t
GROUP BY TO_CHAR(t.time, 'YYYY-MM-DD HH24')
8cdiaqws

8cdiaqws2#

为什么不创建另一个存储计数和日期的表呢?创建一个每小时运行一次的数据库作业,并将计数和系统日期放在新表中。您的代码将只是查询新表。

create table ohtertable_count (no_of_rows number, time_of_count date);

每小时运行的数据库作业类似于

insert into othertable_count 
select count(1), sysdate
from othertable;

你将查询表othertable_count而不是查询你的原始表。

bmp9r5qi

bmp9r5qi3#

SELECT To_char(your_column, 'YYYY-MM-DD HH24') AS hourly, 
       Count(*)                              AS numPerHour 
FROM   your_table 
WHERE  your_column > '1-DEC-18' 
       AND your_column < '4-DEC-18' 
GROUP  BY To_char(your_column, 'YYYY-MM-DD HH24') 
ORDER  BY hourly;
mklgxw1f

mklgxw1f4#

要获取我使用的如下每小时数据,选择s.req_submit_date,EXTRACT(HOUR FROM to_timestamp(s.req_submit_date,'yyyy-mm-dd hh24:mi:ss'))hr,count(*)from your_table s where s.req_submit_date〉= to_date('20230414 ',' yyyymmdd')and s.req_submit_date〈to_date('20230416 ',' yyyymmdd')group by s.req_submit_date,EXTRACT(HOUR FROM to_timestamp(s.req_submit_date,'yyyy-mm-dd hh24:mi:ss'))order by s.req_submit_date,hr;

相关问题