String Oracle日期时间序列格式

String Oracle日期时间序列格式,string,oracle,date,time,average,String,Oracle,Date,Time,Average,我有下面的oracle表,其中datetime位于单个列中,数据类型为string f_ID f_type f_date 1001 A 3/30/14 12:20:00 PM 1001 B 3/30/14 10:20:00 AM 1002 A 2/3/14 11:0:00 AM 1002 B 2/3/14 9:00:00 AM 1003 A

我有下面的oracle表,其中datetime位于单个列中,数据类型为string

f_ID      f_type    f_date

1001      A         3/30/14 12:20:00 PM

1001      B         3/30/14 10:20:00 AM

1002      A         2/3/14 11:0:00 AM

1002      B         2/3/14 9:00:00 AM

1003      A         2/13/14 10:00:00 AM

1003      B         12/13/14 10:00:00 AM

1111      B         12/13/14 10:00:00 AM
我希望计算计数大于1的所有装运所用的平均时间。因此,1001装运的时差为2小时,1002装运的时差为2小时,1003装运的时差为10个月(303x24=7272)小时。1111的计数为1,因此可以将其从平均值中排除

因此,平均结果应为
(2+2+7272)/3=2425.33小时

我该如何查询它呢?

这个应该可以:

WITH t AS
    (SELECT f_ID, ABS(b.f_date-a.f_date)*24 AS duration
    FROM my_table a
        JOIN my_table b USING (f_ID)
    WHERE a.f_type = 'A'    
        AND a.f_type = 'B')
SELECT AVG(duration)
FROM t;

对于每个f_id,是否总是有1条f_类型为'B'的记录和0条f_类型为'A'的记录?此外,我认为您的示例计算是错误的-1001的时间差看起来像2小时,而1003的时间差是10个月。是的,彼得,谢谢您的更正。我已经对每个f_id记录进行了编辑,f_类型可以是A、B或C,使f_id和f_类型形成复合键。在f_日期“ORA-01722:无效数字”。请注意,f_日期是字符串类型。这太愚蠢了!制作一个类似于截止日期(b.f_日期'FmMM/FmDD/RR FmHH:FmMI:ss AM')-截止日期(a.f_日期'FmMM/FmDD/RR FmHH:FmMI:ss AM')的演员阵容。