最大平均值 - MYSQL

时间:2016-07-29 12:45:49

标签: mysql sql

我正在尝试重复我在mysql中对excel所做的事情。

平均多列并获得此计算的最高/最大值。

以下是我在excel中制定的数据 -

enter image description here

橙色值优于平均功能,绿色优于最大功能。

我使用以下SQL在MYSQL中获得相同的结果。

SELECT AVG(HOUR_8 + HOUR_9 + HOUR_10 + HOUR_11 + HOUR_12 + HOUR_13 + HOUR_14 
                  + HOUR_15 + HOUR_16)/9 AS AVERAGE_HOUR 
FROM HOURS

但输出的最佳平均值是现在,如果我在mysql中执行相同的等式,则最佳平均值为 13.51851852

我曾尝试将sql与MAX结合使用,但它根本不允许你这样做。

有没有其他方法可以正确重复我在MYSQL中的excel中所做的事情?

2 个答案:

答案 0 :(得分:2)

您不需要AVG()功能。这是一个聚合函数,所有值都在一行中。

相反,您可以算术计算该值。然后,您可以使用ORDER BYLIMIT,或只使用MAX()来获取值:

select t.*,
       ((hour_8 + hour_9 + hour_10 + hour_11 + hour_12 + hour_13 + hour_14 + hour_15 + hour_16)/9) as avg_hour
from t
order by avg_hour desc
limit 1;

这将给出行中的所有其他值。如果你只想要最大平均值:

select max((hour_8 + hour_9 + hour_10 + hour_11 + hour_12 + hour_13 + hour_14 + hour_15 + hour_16)/9) as max_avg_hour
from t;

答案 1 :(得分:0)

我猜你在那里使用了AVG函数错误,因为它获得了列AVG。你应该使用这样的东西:

SELECT (HOUR_8 + HOUR_9 + HOUR_10 + HOUR_11 + 
    HOUR_12 + HOUR_13 + HOUR_14 + HOUR_15 + 
    HOUR_16) / 9 AS AVG_HOUR FROM HOURS

这会为您提供一个包含每行小时平均值的列。

现在你应该使用mySQL的MAX()函数来选择它们的最大值。

SELECT MAX(AVG_HOUR) FROM
(
    SELECT (HOUR_8 + HOUR_9 + HOUR_10 + HOUR_11 + 
        HOUR_12 + HOUR_13 + HOUR_14 + HOUR_15 + 
        HOUR_16)/9 AS AVERAGE_HOUR FROM HOURS
)