SQL

Функция высчитывания медианы с помощью SQL: как произвести расчет

Lorem ipsum dolor

В SQL медиана находит значение среднего элемента в отсортированном массиве. Если в массиве нечетное количество элементов, тогда медиана берет значение «центрального» элемента; если в массиве четное количество элементов, тогда — среднее значение двух «центральных» элементов массива.

SQL медиана

Представим простую ситуацию, где у вас есть некий массив с оценками. Допустим, вы проходили какой-нибудь тест на знание языка программирования и получили 80 баллов. Вам необходимо узнать, в какой «половине» массива вы находитесь: первой или второй? Это даст вам понимание о баллах вашего теста: находитесь вы в половине лучших или худших.

У вас есть массив с баллами теста: [54, 80, 94, 99, 98, 69, 59]. Вам необходимо:

  • первым делом рассортировать массив [54, 80, 94, 99, 98, 69, 59], чтобы получить следующий результат: [54, 59, 69, 80, 94, 98, 99];

  • запустить поиск медианы и определить, что массив состоит из 7 элементов, значит, четвертый элемент будет медианой, то есть 80 — это медиана.

Вам это даст понимание того, что ваш результат теста находится в «твердой» середине, а это значит, что вам есть куда расти в лучшую сторону. Мы посчитали медиану на словах, но как ее посчитать в SQL?

Как определяется медиана в MySQL

На сегодня в MySQL нет встроенной функции, способной определять медиану. Поэтому ее определением необходимо заниматься самостоятельно, создавая собственный процесс. Вернемся к нашим баллам по тестированию. Предположим, что все баллы занесены в SQL-таблицу и находятся в столбце «rating». Чтобы построить алгоритм запроса меридианы, вам необходимо:

  • отсортировать столбец «rating», обозначив прикрепление индекса каждой отсортированной строке;

  • определить четное или нечетное количество аргументов в столбце;

  • если столбец несет в себе нечетное количество аргументов, тогда найти элемент из середины списка — это и будет медианой;

  • если столбец содержит четное количество аргументов, тогда найти два элемента из середины списка и вычислить среднее значение — это и будет медианой;

  • вывести значение медианы.

Как выглядит такой запрос на примере:

SET @rowindex := -1;

SELECT

AVG(g.rating)

FROM

(SELECT @rowindex:=@rowindex + 1 AS rowindex,

rating.grade AS grade

FROM rating

ORDER BY rating.grade) AS g

WHERE

g.rowindex IN (FLOOR(@rowindex / 2) , CEIL(@rowindex / 2));

 

Объясняем код:

  • @rowindex отсортирует оценки и задаст им собственный индекс;

  • после того как список отсортируется, мы извлечем среднее значение в списке;

  • затем оператор SELECT вернет полученное среднее значение в качестве медианы.

Как определяется медиана в SQL Server

MySQL и SQL Server объединяет использование SQL и похожее функциональное назначение. Но они различаются по своей структуре, синтаксису и решению задач. В контексте данной статьи мы не будем выяснять различия между двумя этими системами. Но даже на фоне поиска медианы они сильно отличаются. В MySQL нет встроенной функции, поэтому приходится выстраивать запросы самостоятельно, что мы и делали выше. В SQL Server есть встроенная функция.

Шаблон встроенной функции для поиска медианы в SQL Server выглядит следующим образом:

Median(Set_Expression [ ,Numeric_Expression] )

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

Заключение

Медина в любой базе SQL может быть найдена либо при помощи встроенных инструментов, либо при помощи собственных сформированных запросов. Такая разница происходит потому, что разные типы баз данных поддерживаются разными компаниями, которые добавляют или не добавляют необходимый функционал. Даже при том, что большинство баз данных используют язык программирования SQL, различия в функциональности у них налицо.

Схожие статьи

Подключение к базе данных MySQL на Python: создание на SQLite3
SQL

Подключение к базе данных MySQL на Python: создание на SQLite3

MySQL: добавить столбец в таблицу, как переименовать и изменить поле
SQL

MySQL: добавить столбец в таблицу, как переименовать и изменить поле

SQL

Как правильно и легко пользоваться HeidiSQL: импорт и экспорт базы

SQL

Опeратор Between в Oracle SQL: включает границы или нет. Примеры использования

×