如何计算 MySQL table 中所有行的 MIN、MAX、AVG

How to compute the MIN, MAX, AVG of all rows in MySQL table

我有一个包含测量数据的 MySQL table。例如:

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

我想计算所有行的最大值、最小值和平均值。所以上面例子的结果应该是:

MIN: 0.0012 
MAX: 0.0019 
AVG: 0.001475

我知道 MIN、MAX 和 AVG MYSQL 函数。但是他们 return 单个字段的结果。我需要类似于 COUNT 函数的聚合结果。

编辑:

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

像这样:

  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;

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

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

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

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

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>

我不知道在不分组的情况下使用聚合器时可能会返回多列。不错的特例在这里。感谢 Johan and HoldOffHunger.

的澄清