Mysql计算按日期分组的中位数+平均值

时间:2021-06-30 18:35:00

标签: mysql

我正在尝试计算表格上的平均值 + 中位数,并且正在对结果进行分组。由于没有用于中位数计算的内置函数,我引用它来计算中位数。 Simple way to calculate median with MySQL

我当前的查询如下:

SELECT DATE(t1.dateCreated)                                                     AS date_created,
       ROUND(AVG(t1.processTime), 2)                                               AS average_process_time,
       ROUND(AVG(t1.time2), 2)                                      AS average_time2,
       (SELECT AVG(dd.processTime)
        FROM (
                 SELECT d.processTime, @rownum := @rownum + 1 as `row_number`, @total_rows := @rownum
                 FROM table1 d,
                      (SELECT @rownum := 0) r
                 WHERE d.dateCreated >= '2021-06-30'
                   AND d.dateCreated <= '2021-07-02'
                 ORDER BY d.processTime
             ) as dd
        WHERE dd.row_number IN (FLOOR((@total_rows + 1) / 2), FLOOR((@total_rows + 2) / 2))) as median_processTime,
       (SELECT AVG(dd.time2)
        FROM (
                 SELECT d.time2, @rownum := @rownum + 1 as `row_number`, @total_rows := @rownum
                 FROM table1 d,
                      (SELECT @rownum := 0) r
                 WHERE d.dateCreated >= '2021-06-30'
                   AND d.dateCreated <= '2021-07-02'
                 ORDER BY d.time2
             ) as dd
        WHERE dd.row_number IN (FLOOR((@total_rows + 1) / 2), FLOOR((@total_rows + 2) / 2))) as median_time2
FROM table1 t1
WHERE t1.dateCreated >= '2021-06-30'
  AND t1.dateCreated <= '2021-07-02'
GROUP BY DATE(t1.dateCreated)
ORDER BY DATE(t1.dateCreated)

但是我的中位数计算没有正确计算。也可以优化这个查询吗?

0 个答案:

没有答案