首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >平均最大- MYSQL

平均最大- MYSQL
EN

Stack Overflow用户
提问于 2016-07-29 12:45:48
回答 2查看 831关注 0票数 0

我正在尝试重复我在mysql中对excel所做的工作。

对多列进行平均,并得到此计算的最高/最大值。

这是我用excel计算出来的数据-

橙色的数值优于平均函数,绿色的值大于最大值。

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

代码语言:javascript
复制
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中所做的事情吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-29 12:55:31

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

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

代码语言:javascript
复制
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;

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

代码语言:javascript
复制
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;
票数 3
EN

Stack Overflow用户

发布于 2016-07-29 12:53:29

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

代码语言:javascript
复制
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来选择它们的最大值。

代码语言:javascript
复制
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
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38659257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档