第一次发布问题,如果不清楚,请您道歉。
我想根据生成日期时间字段与业务日期相比,找到文件的平均传送时间。我的问题是文件可能在午夜之前或之后交付,这超出了我的平均水平。
这是我正在测试的数据集;
select ID, business_date, generation_date
from table
where business_date >= to_date('20190705','yyyyMMdd hh24mi') and
subscription_id = 'Report 1'
ID BUSINESS_DATE GENERATION_DATE
Report 1 09/07/2019 09/07/2019 23:02
Report 1 08/07/2019 09/07/2019 01:10
Report 1 05/07/2019 05/07/2019 20:58
Report 1 10/07/2019 10/07/2019 21:54
第二行的generation_date是午夜之后,因此当我尝试以下代码时,它给出的平均值不正确。
select id,
to_char(trunc(sysdate) +
avg(cast(generation_date as date) - cast(trunc(generation_date) as date))
, 'hh24mi') as ""Average_Delivery_Time""
from table
where a.business_date >= to_date('20190705','yyyyMMdd hh24mi')
and id = 'Report 1'
group by id
ID Average_Delivery_Time
Report 1 16:46:27
我已经考虑过将日期和时间分开,然后根据business_date进行一些计算,但是我确信必须有一种更好的方法来找到平均时间(考虑不同的日期)。
正确的平均时间:22:46:26
任何有关如何在SQL中执行此操作的帮助将不胜感激。
见上文
见上文
答案 0 :(得分:1)
这是您想要的吗?
avg(generation_date - trunc(business_date))
我不确定为什么要将日期日期转换为date
。