Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何将分钟添加到时间戳?_Sql_Oracle_Timestamp - Fatal编程技术网

Sql 如何将分钟添加到时间戳?

Sql 如何将分钟添加到时间戳?,sql,oracle,timestamp,Sql,Oracle,Timestamp,我有一个表,其中有5分钟间隔的数据,即5 10 15 20 该表有3列(id编号、日志日期、计数编号),有数百万行。到目前为止,我一直在使用下面的查询来汇总特定日期的“计数”列 我需要按小时级别进行聚合 select id, SUM(count) log_ts + DECODE(TO_CHAR(log_ts , 'MI'), '05', 55/1440, '10', 50/1440, '15', 45/1440, '20',40/1440,'25',35/1440,'30',30/14

我有一个表,其中有5分钟间隔的数据,即5 10 15 20

该表有3列(id编号、日志日期、计数编号),有数百万行。到目前为止,我一直在使用下面的查询来汇总特定日期的“计数”列

我需要按小时级别进行聚合

select id, SUM(count)
     log_ts + DECODE(TO_CHAR(log_ts , 'MI'), '05', 55/1440, '10', 50/1440, '15', 45/1440, '20',40/1440,'25',35/1440,'30',30/1440,'35',25/1440,'40',20/1440,'45',15/1440,'50',10/1440,'55',5/1440,0) TS
from example_table 
Group by id,
log_ts + DECODE(TO_CHAR(log_ts , 'MI'), '05', 55/1440, '10', 50/1440, '15', 45/1440, '20',40/1440,'25',35/1440,'30',30/1440,'35',25/1440,'40',20/1440,'45',15/1440,'50',10/1440,'55',5/1440,0)
是否有其他方法可以按小时级别聚合时间列,该时间列的数据为5分钟级别。

您需要使用,它可以将日期/数字等截断为指定的时间单位

对于每小时,时间为
HH
。这使您的查询:

select trunc(log_ts, 'HH'), sum(count)
  from example_table
 group by trunc(log_ts, 'HH')
我假设您列的名称实际上不是
COUNT
。如果是的话,我建议你把它改成非关键词的东西。

试试这样

SELECT id, trunc(log_ts, 'HH'), sum(count)
FROM   example_table
GROUP BY id, trunc(log_ts, 'HH');