如何计算时间预言机的算术平均值?

Posted

技术标签:

【中文标题】如何计算时间预言机的算术平均值?【英文标题】:How to calculate the arithmetic mean of time oracle? 【发布时间】:2019-08-03 20:02:06 【问题描述】:

我在Oracle中有一个表,列中有时间值,但列类型是nvarchar2,时间格式是0:21:31,我如何计算平均值即( 0:22:00 + 0:24:00) = 0:23:00

【问题讨论】:

【参考方案1】:

显而易见的问题是,为什么“时间”存储为字符串?这让一切变得困难。而且,特别是为什么NVARCHAR2 中的N?字符串只是数字和冒号,为什么需要“国家字符集”字符串?

尽管如此...这是一种方法 - 在输入错误时会以多种不同的方式失败 - 输出再次为 NVARCHAR2 数据类型。 (注意 TO_NCHAR() 中的 NCHARN,我从未见过有人使用过。)输入以列 AB 的形式给出在WITH 子句中的编造表T 中(仅用于测试,它不是解决方案的一部分;使用您的实际表名和列名,并删除顶部的WITH 子句) .

with t as (select '0:24:00' a, '0:22:00' b from dual)
select to_nchar(date '2000-01-01'
                + ( (to_date(a, 'hh24:mi:ss') - date '2000-01-01')
                  + (to_date(b, 'hh24:mi:ss') - date '2000-01-01')
                  ) / 2, 'hh24:mi:ss') as avg_ab
from   t
;

AVG_AB          
----------------
00:23:00

如果您的所有时间都在一个列中,请将其命名为A,您可以使用标准的AVG,但仍需要使用TO_DATE()TO_NCHAR()...

with t as (select '0:24:00' a from dual union all select '0:20:30' from dual)
select to_nchar(date '2000-01-01' 
                + avg(to_date(a, 'hh24:mi:ss') - date '2000-01-01'),
                'hh24:mi:ss') as avg_a
from   t
;

AVG_A           
----------------
00:22:15

【讨论】:

以上是关于如何计算时间预言机的算术平均值?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以计算 R 中的算术运算次数?

计算相关性/加权算术平均 SQL

平均指标包括

ADAMoracle如何保障数据的安全和精准呢?

对于移动平均算法,是计算某变量之前n个数值的算术平均,正确的说法是:----腾讯2016研发工程师在线模拟笔试题

您将如何计算 IMDB 电影评分?