mun*_*nch 13 mysql sql stored-procedures stored-functions
我想在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;
Run Code Online (Sandbox Code Playgroud)
我可以用PHP编写它,但在SQL中考虑它会有更好的整体性能.我非常感谢你的帮助.
查看@Richard aka cyberkiwi 在这个问题中的回答和评论:
Select *
from
(
SELECT tbl.*, @counter := @counter +1 counter
FROM (select @counter:=0) initvar, tbl
ORDER BY ordcolumn
) X
where counter >= (25/100 * @counter) and counter <= (75/100 * @counter);
ORDER BY ordcolumn
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7433 次 |
最近记录: |