在SQL Server中,TOP可用于返回查询中的前n行.例如,
SELECT TOP 100 * FROM users ORDER BY id可能用于返回注册网站的前100个人.(这不一定是最好的方式,我只是以它为例).
我的问题是 - 在其他数据库中,TOP等于什么,例如Oracle,MySQL,PostgreSQL等?如果没有等效的关键字,您可以建议使用哪些变通方法来获得相同的结果?
我想在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中考虑它会有更好的整体性能.我非常感谢你的帮助.
我想知道是否有任何函数可以在MySQL中用于从包含数值的列中选择TOP X(或底部)百分比.
基本上,我有一个包含价格列表的列,我只想返回价格前十个百分点的那些字段.有什么建议?
假设我有一个值列表,如下所示:
id value
----------
A 53
B 23
C 12
D 72
E 21
F 16
..
Run Code Online (Sandbox Code Playgroud)
我需要这个列表的前10 % - 我试过:
SELECT id, value
FROM list
ORDER BY value DESC
LIMIT COUNT(*) / 10
Run Code Online (Sandbox Code Playgroud)
但这不起作用.问题是我在查询之前不知道记录的数量.有任何想法吗?