oracle 每隔3分钟查询一次

1sbrub3j  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(210)

我有一个包含WORK_ORDER、DATE和其他列的表。我需要一个查询来获取数据的基础上,每3分钟的时间间隔的日期列。

bksxznpy

bksxznpy1#

例如,如果,如果要计算每三分钟内的工作单数量,则可以将DATE列截断到分钟的开始(将秒分量归零),然后减去分钟分量模3(这是因为一个小时中有3分钟的确切倍数,所以您不必担心与小时边界重叠)在每三分钟间隔开始时获取DATE;然后你可以GROUP BY它并聚合:

SELECT TRUNC("DATE", 'MI')
       - MOD(EXTRACT(MINUTE FROM CAST("DATE" AS TIMESTAMP)), 3)
         * INTERVAL '1' MINUTE AS date_grp,
       COUNT(*)
FROM   table_name
GROUP BY
       TRUNC("DATE", 'MI')
       - MOD(EXTRACT(MINUTE FROM CAST("DATE" AS TIMESTAMP)), 3)
         * INTERVAL '1' MINUTE;

其中,对于样本数据(每分钟间隔10行):

CREATE TABLE table_name (work_order, "DATE") AS
SELECT LEVEL, TRUNC(SYSDATE) + INTERVAL '1' MINUTE * LEVEL
FROM   DUAL
CONNECT BY LEVEL <= 10;

输出:
| 日期_GRP| COUNT(*)|
| --------------|--------------|
| 2023-05-16 00:00:00|二|
| 2019 -05-16 00:03:00|三|
| 2019 -05-16 00:06:00|三|
| 2019 -05-16 00:00:00|二|

  • 注意:DATE是保留字,不能用作无引号标识符;您要么需要为列使用不同的标识符,要么在使用标识符的所有地方使用带引号的标识符。*

fiddle

相关问题