Оконная функция MEDIAN () на стабильной базе данных Maria - PullRequest
0 голосов
/ 25 января 2020

Мне нужно выполнить вычисление MEDIAN как часть запроса. Мой разработчик сказал мне, что это возможно с Maria DB 10.3.3, но мой администратор сервера сказал мне, что они могут обновиться только до 10.3.2, так как это последняя стабильная версия. Я вижу, что 10.3.3 был выпущен 23 декабря c 2017, как это все еще просто бета?

В любом случае, какие будут мои лучшие варианты использования какой-либо функциональности MEDIAN? Выполнение подзапросов будет уродливым, медленным и потреблять больше ресурсов ЦП.

Ответы [ 2 ]

1 голос
/ 26 января 2020

Вы можете проверить последнюю стабильную версию со страницы MariaDB (в настоящее время 10.4.11). Использование нативной median() -функции будет быстрее, чем ее вычисление самостоятельно.

1 голос
/ 25 января 2020

Вы можете использовать оконные функции. Для числового значения c:

select avg(col)
from (select t.*
             row_number() over (order by col) as seqnum,
             count(*) over () as cnt
      from t
     ) t
where seqnum in ( cnt / 2, (cnt + 1) / 2, (cnt + 2) / 2);

Для строки или даты сложнее использовать интерполяцию, поэтому я просто рекомендую:

select col
from (select t.*
             row_number() over (order by col) as seqnum,
             count(*) over () as cnt
      from t
     ) t
where seqnum in ( cnt / 2, (cnt + 1) / 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...