String Oracle日期时间序列格式
我有下面的oracle表,其中datetime位于单个列中,数据类型为stringString 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
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')的演员阵容。