Я хочу написать хранимую процедуру в SQL (MySQL) для вычисления среднего значения второго и третьего квартилей.
Другими словами, у меня есть записи для измерений того, сколько времени занимает URL-адрес, чтобы нагрузка. Записи (id, url, time) - это множество измерений для каждого URL. То, что я пытаюсь сделать, - это удалить для каждого URL-адреса самые низкие и верхние 25% (т.е. нижний и верхний квартили) и вычислить среднее значение оставшихся 25–75% времени загрузки. И сохраните это в другой таблице.
Я видел несколько примеров этого для MS SQL, и это показалось относительно простым. Но я должен использовать MySQL, где:
И я дошел до этого:
create procedure G(
IN val VARCHAR(10)
)
Begin
select @cnt:=count(*) from test where a=val;
select @of:= @cnt /4;
SELECT @len:= @cnt/2;
Prepare stmt from 'select * from test where a="a" LIMIT ?,?';
execute stmt using @of, @len;
END;
Я могу написать его на PHP, но думаю, что в SQL он будет иметь намного лучшую общую производительность. Я буду очень признателен за помощь.