SQL:计算行之间差异的平均值

时间:2019-12-19 14:32:08

标签: mysql

我有一个如下表

session   stepId        starttime     
------   -----------    -----    
1        1              10:00        
1        1              10:10        
1        2              10:40        
1        3              10:50        
1        4              11:00

我要计算的是每个步骤ID之间的平均时间,如果stepID相同,则像前两行一样,使用最新的行。 例如,对于上述查询,结果应为((10:40-10:10)+(10:50-10:40)+(11:00-10:50))/ 3。 我正在使用MySQL。

1 个答案:

答案 0 :(得分:1)

SELECT 
    TIME(AVG(M.timediff))
FROM
    (SELECT 
        TIME(b.starttime - a.starttime) AS timediff
    FROM
        (SELECT 
        stepId, MAX(starttime) starttime
    FROM
        test.test
    GROUP BY stepId) a
    LEFT JOIN test.test b ON a.stepId = b.stepId - 1
    WHERE
        a.starttime IS NOT NULL
            AND b.starttime IS NOT NULL) AS M