SQL 查询平均时间不考虑周末和节假日



我需要平均从创建(a.Date_Create(到完成(s.Date_Status_Finalized(字段所需的时间。

无法计算周末和节假日。

但是,以下查询正在工作,会考虑该期间的每一天。

SELECT AVG(DATEDIFF(HH, a.Date_Create, s.Date_Status_Finalized)) 
FROM RTRC_Processo p
Left join RTRC_Solucao s on (s.Id_Processo_RTRC = p.Id )
Left Join RTRC_Abertura a on (a.Id_Processo_RTRC = p.Id) 
WHERE 1=1 
and s.Status ='F' 
and YEAR(s.Date_Status_Finalized) = 2019
and MONTH(s.Date_Status_Finalized)= 08

要排除工作日,您需要使用以下查询,我只是找到天数的差异并将其乘以 24 得到小时数 -

SELECT AVG(
(DATEDIFF(DD, a.Date_Create, s.Date_Status_Finalized) - 
DATEDIFF(WK, a.Date_Create, s.Date_Status_Finalized) * 2 -  
CASE WHEN datepart(dw, @d1) = 1 THEN 1 ELSE 0 END +
CASE WHEN datepart(dw, @d2) = 1 THEN 1 ELSE 0 END
) * 24 ) 
FROM RTRC_Processo p
Left join RTRC_Solucao s on (s.Id_Processo_RTRC = p.Id )
Left Join RTRC_Abertura a on (a.Id_Processo_RTRC = p.Id) 
WHERE 1=1 
and s.Status ='F' 
and YEAR(s.Date_Status_Finalized) = 2019
and MONTH(s.Date_Status_Finalized)= 08

同样,要排除假期,您需要使用假期表减去在此期间发生的假期数量。

最新更新