mysql - 我的 mySQL 调用只返回一个平均值,而它应该返回所有平均值

标签 mysql math median cumulative-sum

这是我的 mySQL 语句:

    SELECT DATE(x.created_at), AVG(TIMEDIFF(y.created_at, x.created_at)/60/60)
    FROM 
        (SELECT *
            FROM events a 
            WHERE a.created_at > '12-10-10 12:12:12'
                AND a.type = 'Started') x INNER JOIN

        (SELECT *
            FROM events a 
            WHERE a.created_at > '12-10-10 12:12:12'
                AND a.type = 'Complete') y ON x.target_id = y.target_id
    GROUP BY DATE(x.created_at)
    ORDER BY DATE(x.created_at)    

理想情况下,我试图获取每个日期的运行中位数。因此,对于每个日期,选择 created_at 列之间的时间差,并找到该日期的所有值之间的中位数 TIMEDIFF。依此类推,直到每个日期都有相应的完整

作为一个较短的目标,我上面的代码块只是“平均”(因为我无法计算出中位数),即每个日期的最后返回值,而不是所有日期的值那个日期。

有任何提示、技巧、答案吗?

最佳答案

鉴于适合测试的数据,我们的查询似乎有效。 Se 这个更正的 SQL Fiddle:http://sqlfiddle.com/#!2/8458d/3/0

但是,查询可以简化为

SELECT DATE(a.created_at),
       AVG(TIMEDIFF(b.created_at, a.created_at)/60/60)
FROM events a
INNER JOIN events b
ON a.target_id = b.target_id
WHERE a.created_at > '2012-10-10 12:12:12'
AND a.type = 'Started'
AND b.created_at > '2012-10-10 12:12:12' -- not needed?
AND b.type = 'Completed'
GROUP BY DATE(a.created_at)
ORDER BY DATE(a.created_at) 

关于mysql - 我的 mySQL 调用只返回一个平均值,而它应该返回所有平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13977169/

相关文章:

php - 注册过程如何在社交引擎中运作?如何/什么以及何时调用代码

mysql - 使用 ORDER BY 对行进行编号

javascript - 将时间增量和速度纳入速度/摩擦运动

r - R中的订单统计?

mysql - 从表 A 中删除,其中表 A 中不存在子项且表 B 中不存在子项

c# - C# 中多个数据集 Winform 项目的 RDLC 问题

c - 仅对数组中的偶数求和

javascript - 求线段和圆之间的切线

Python min、max、mean、median 代码函数定义误差

algorithm - 如何在 O(logn) 时间内找到 5 个排序列表的中位数?