计算两个日期之间的差异

问题描述 投票:-2回答:1

我被要求制作Power BI报告,其中显示有关组织服务台的一些详细信息。我已经很容易做到了,但是,有一件我想不通的事情:他们要求我显示每个支持分析师解决票证所需的平均时间。 问题是:我必须仅计算平均每天8:00 AM至6:00 PM之间的平均时间。这意味着一天只有10个小时。我试图在SQL(MySQL)中执行此操作,但没有任何结果。

抱歉,这是一个愚蠢的问题,我仍在学习SQL和Power BI。

我尝试过:

CASE WHEN EXTRACT(HOUR FROM tick.CREATED) >= 8 AND
EXTRACT(HOUR FROM tick.TIME_CLOSED) <= 18 AND
weekday(tick.CREATED) not in (6,7) THEN
TIMESTAMPDIFF(HOUR,tick.CREATED,tick.TIME_CLOSED) END

但是我不知道跳过小时数超出此范围并继续计算第二天的时间的方法。

mysql sql datediff
1个回答
0
投票

尝试一下,请更改列名称,如果需要,可以每天添加一个分组

SELECT AVG(TIMESTAMPDIFF(SECOND,`from`,`to`))
FROM (
    SELECT `to`  
        ,CASE 
            -- if saturday then start date will be next monday first hour
            WHEN weekday(`from`) = 6 then CONCAT(DATE(DATE_ADD(`from`, INTERVAL 2 DAY)),' 08:00:00') 
            -- if sunday then start date will be next monday first hour
            WHEN weekday(`from`) = 7 then CONCAT(DATE(DATE_ADD(`from`, INTERVAL 1 DAY)),' 08:00:00') 
            -- if created outside business time then next day first hour
            WHEN `from` between CONCAT(DATE(`from`),' 18:00:00') and CONCAT(DATE(DATE_ADD(`from`, INTERVAL 1 DAY)),' 08:00:00') then CONCAT(DATE(DATE_ADD(`from`, INTERVAL 1 DAY)),' 08:00:00')
            ELSE `from`
        END `from`
    FROM ticket
    WHERE `from` is not null
        AND `to` is not null
) t
WHERE DATE(`from`) = DATE (`to`); -- if you want only ticket closed same day, its optional
© www.soinside.com 2019 - 2024. All rights reserved.