在Cx_Oracle 11g数据库中我有两列:' timestamp'和'价值'。我需要一个查询来获得每小时一次的平均值。这是最好的方法吗?时间戳是从纪元开始的几秒钟。
答案 0 :(得分:1)
如果TIMESTAMP
列属于TIMESTAMP
数据类型,则将TIMESTAMP
值截断为小时,然后将其分组:
SELECT TRUNC( timestamp_column, 'HH24' ) AS timestamp_hours,
AVG( value ) AS average_value
FROM your_table
GROUP BY TRUNC( timestamp_column, 'HH24' );
如果:
时间戳是从纪元开始的秒数。
SELECT TRUNC( epoch_column / 3600 ) AS hours_from_epoch,
AVG( value ) AS average_value
FROM your_table
GROUP BY TRUNC( epoch_column / 3600 );
如果您需要handle leap seconds,那么您将需要一个闰秒列表(并在将来维护它),然后在计算时间时将其考虑在内。