Вычислить медианное значение в MySQL

Опубликовано: 30 Ноября, 2021

Медиана:
В статистике и теории вероятностей медиана - это значение, отделяющее верхнюю половину от нижней половины выборки данных, совокупности или распределения вероятностей. Говоря простым языком, медиана - это среднее значение отсортированного списка значений.

Рассчитать медианное значение в MySQL -
Рассмотрим таблицу демку где Name это имя студента и расстояние общее расстояние (в км) от своего дома в колледж.

Имя Расстояние
Саммит 25
Яскират 35 год
Сукрут 20
Шивам 20
Санчит 45
Принц 35 год
Кешав 15
Preet 25
Саурав 20

Мы вычисляем медианное значение Distance из демонстрационной таблицы.
Запрос -

 УСТАНОВИТЬ @rowindex: = -1;
 
ВЫБРАТЬ
   AVG (d.distance) как медиана 
ИЗ
   (ВЫБЕРИТЕ @rowindex: = @ rowindex + 1 AS rowindex,
           demo.distance AS расстояние
    ИЗ демонстрации
    ЗАКАЗАТЬ ПО демонстрационной дистанции) КАК d
ГДЕ
d.rowindex IN (FLOOR (@rowindex / 2), CEIL (@rowindex / 2));

Объяснение :

  1. Начиная с внутреннего подзапроса - select назначает @rowindex в качестве инкрементного индекса для каждого выбранного расстояния и сортирует расстояние.
  2. Когда у нас есть отсортированный список расстояний, внешний запрос будет извлекать средние элементы в массиве. Если массив содержит нечетное количество элементов, оба значения будут одним средним значением.
  3. Затем предложение SELECT внешнего запроса возвращает среднее этих двух значений в качестве медианного значения.

Выход -

 25,0000