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

时间:2018-09-28 20:34:18

标签: mysql database max average min

我有一个包含测量数据的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函数的汇总结果。

编辑:

对于我来说,不必一次查询所有3个函数的结果。可以有3个不同的查询。主要问题是如何汇总示例中说明的所有行的MAX。

3 个答案:

答案 0 :(得分:1)

如果我从我们的评论中正确理解,我相信这就是您要寻找的内容,应该在一个查询中完成。

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

答案 1 :(得分:1)

您不介意在其他查询中使用它吗?然后,您可以轻松进行汇总,而无需任何麻烦。

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的澄清。

答案 2 :(得分:0)

像这样:

  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;

然后,如果您需要所有行的平均值,则可以编写另一个查询以根据此结果进行计算。