首页 文章

如何计算MySQL表中所有行的MIN,MAX,AVG

提问于
浏览
-2

我有一个包含测量数据的MySQL表 . 例如:

# name, time
first, 0.0013
second, 0.0015
third, 0.0012
fourth, 0.0019

我想计算所有行的MAX,MIN和AVG . 所以上面例子的结果应该是:

MIN: 0.0012 
MAX: 0.0019 
AVG: 0.001475

我知道MIN,MAX和AVG MYSQL函数 . 但他们返回单个字段的结果 . 我需要类似于COUNT函数的聚合结果 .

EDIT:

我没有必要在一个查询中获得所有3个函数结果 . 有3个不同的查询是好的 . 主要问题是如何如我在示例中所示聚合所有行的MAX .

3 回答

  • 0

    你不介意在不同的查询中使用它吗?然后,您可以轻松聚合,没有任何麻烦 .

    SELECT MIN(time) AS minimum FROM <tablename>
    
    SELECT MAX(time) AS minimum FROM <tablename>
    
    SELECT AVG(time) AS minimum FROM <tablename>
    

    编辑:这也可以在没有问题的情况下汇总到单个查询中 .

    SELECT MIN(time) AS minimum, MAX(time) AS maximum, AVG(time) AS average FROM <tablename>
    

    我不知道在没有分组的情况下使用聚合器时可以返回多个列 . 很好的特例在这里 . 感谢JohanHoldOffHunger的澄清 .

  • 1

    如果我从我们的评论中正确理解,我相信这是您正在寻找的,并且应该在一个查询中完成 .

    SELECT 
        MIN(time) AS minimum, 
        MAX(time) AS maximum, 
        AVG(time) AS average
    FROM t;
    
  • 1

    像这样 :

    select ROW_NUMBER(), least(first, second, third, fourth) as min, 
       greatest(first, second, third, fourth) as max,
      (first+ second+ third+ fourth)/4 as avg
      from table t;
    

    那么如果你需要平均所有行,你可以编写另一个查询来从这个结果中计算它 .

相关问题