我正在尝试重复我在mysql中对excel所做的工作。
对多列进行平均,并得到此计算的最高/最大值。
这是我用excel计算出来的数据-

橙色的数值优于平均函数,绿色的值大于最大值。
我使用下面的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中所做的事情吗?
发布于 2016-07-29 12:55:31
您不需要AVG()函数。这是一个聚合函数,所有的值都在一行中。
相反,您只需算术计算该值。然后,您可以使用ORDER BY和LIMIT,或者只使用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;发布于 2016-07-29 12:53:29
我想您在那里使用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这给出了一个列,其中包含了每一行的小时平均值。
现在,您应该使用MAX()函数mySQL来选择它们的最大值。
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
)https://stackoverflow.com/questions/38659257
复制相似问题