Как вычислить MIN, MAX, AVG всех строк в таблице MySQL - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть таблица 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 разных запроса.Основная проблема заключается в том, как агрегировать, скажем, MAX всех строк, как я иллюстрировал в примере.

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Если я правильно понимаю из наших комментариев, я считаю, что это то, что вы ищете, и должны сделать это в одном запросе.

SELECT 
    MIN(time) AS minimum, 
    MAX(time) AS maximum, 
    AVG(time) AS average
FROM t;
0 голосов
/ 28 сентября 2018

Вы не против, чтобы это было в разных запросах?Тогда вы можете легко объединяться без каких-либо хлопот.

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>

Я не знал, что несколько столбцов могутвозвращаться при использовании агрегатора без группировки.Хороший особый случай здесь.Спасибо за разъяснения Йохан и HoldOffHunger .

0 голосов
/ 28 сентября 2018

вот так:

  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;

, тогда, если вам нужно среднее значение всех строк, вы можете написать другой запрос для вычисления его из этого результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...