Я могу только представить, как сделать это с двумя запросами к базе данных. Первый находит количество строк в базе данных, а второй выбирает с помощью ORDER BY
интересующего меня столбца, LIMIT X, 1
где X - половина числа строк.
Есть ли простой способ сделать это только с одним запросом?
Прямо сейчас я использую средние в своих вычислениях, но я думаю, что среднее было бы лучше; верхняя граница значений отсутствует, и снизу они ограничены 0.
РЕДАКТИРОВАТЬ: да, я хотел сказать «медиана», но имел некоторые ошибки мозга и искал «среднее». Теперь я нашел ответ в stackoverflow
meta
немного кажется, что есть разделение относительно погоды, этот вопрос должен быть здесь или в SO. Я понимаю, что это может быть не запрос уровня ниндзя , но это поставило меня в тупик, и в компании, в которой я работаю, нет администратора баз данных (всего 6 человек).Ответы:
Существует довольно много дискуссий здесь на вычисление медианы значений из таблицы MySQL. Просто найдите на странице «медиана».
Кроме того, мне кажется упущением, что для этого нет встроенной функции. Медиана часто является более описательной для центральной тенденции, чем средняя. Access / VBA имеет такую же дыру в своем списке функций.
источник
Я нигде не видел решения, которое бы получало медиану за один запрос. Я не против временных таблиц, но если они не нужны, отлично! Вот что я придумал:
Я проверил это для четного набора и получил правильный ответ. brand_prof - это просто два столбца: brand_name и прибыль, десятичное значение. Если бы это были целочисленные значения, вам, возможно, пришлось бы разыграть «потолок ((CAST COUNT (*) AS DECIMAL) ...» больше, чем я тестировал. Отличная идея использовать декартово произведение и связать сумму знаков была не мое. я забыл автора, к сожалению.
источник