gpt4 book ai didi

mysql - 在 SQL 中计算 2,3 四分位数平均值

转载 作者:IT老高 更新时间:2023-10-29 00:12:39 25 4
gpt4 key购买 nike

我想用 SQL (MySQL) 编写一个存储过程来计算第二和第三四分位数的平均值。

换句话说,我有测量 URL 加载时间的记录。记录是 (id,url,time),它们是每个 URL 的许多测量值。我想要做的是为每个 URL 删除最低和最高的 25%(即下四分位数和上四分位数)并计算剩余 25%-75% 的加载时间的平均值。并将其存储到另一个表中。

我看到了一些针对 MS SQL 的示例,似乎相对容易。但我必须在以下位置使用 MySQL:

  • LIMIT 子句不支持百分比(没有选择前 25% 的类似物)
  • LIMIT 子句不支持其参数为变量(仅常量)
  • 函数不支持动态 SQL(例如 PREPARE 和 EXECUTE)

我走到这里了:

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 编写它会有更好的整体性能。我会非常感谢一些帮助。

最佳答案

查看@Richard aka cyberkiwi 在this question 中的回答和评论:

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

关于mysql - 在 SQL 中计算 2,3 四分位数平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6993067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com