Я хочу написать функцию, которая вычисляет простой вычисляемый средний расчет в MySQL. Функция будет (очевидно) быть агрегатной функцией. Я новичок в написании функций и т. Д. В MySQL, поэтому мог бы с некоторой помощью справиться.Расчет промежуточных вычислений в MySQL
Алгоритм обрезанного среднего будет выглядеть следующим образом (псевдокод):
CREATE AGGREGATE FUNCTION trimmed_mean(elements DOUBLE[], trim_size INTEGER)
RETURNS DOUBLE
BEGIN
-- determine number of elements
-- ensure that number of elements is greater than 2 * trim_size else return error
-- order elements in ASC order
-- chop off smallest trim_size elements and largest trim_size elements
-- calculate arithmetic average of the remaining elements
-- return arithmetic average
END
Может кто-нибудь помочь с тем, как написать функцию выше правильно, для использования с MySQL?
Есть что вы хотите сделать это как функцию, а не как запрос? Кроме того, учитывая, что вы предпочли ответ на предыдущий вопрос, потому что он использовал стандартный SQL, вам нужно будет использовать его для нескольких разных РСУБД (то есть, а не только для MySQL)? –
@MarkBannister Я намеревался работать с PG (мой любимый db!), Но мне пришлось перепрыгнуть через слишком много обручей, чтобы заставить PG работать с PHP (перекомпилировать PHP [или подобные сумасшедшие просьбы] и т. Д.), Поэтому я выбрал mySQL, который У меня уже есть работа с PHP. Причина, по которой я хотел, чтобы это как функция, заключается в том, что я хочу вернуть обрезанное среднее как столбец в запросе. Я полагаю (если бы у меня было SQL-решение), я мог бы взломать некоторый SQL, чтобы «вставить» обрезанные средние значения в качестве столбца в мой возвращенный набор данных. –
@MarkBannister: короткий ответ на ваш вопрос. Версия ANSI SQL была бы идеальной. Но, поскольку я, случается, работаю с mySQL, тогда, если я __have__ будет db-ориентированным, SQL-код с поддержкой SQL будет иметь приоритет. –