我正在尝试编写最有效的sql来从下面的数据中获取结果
Name,Age,URL
A,20,abc.com
B,12,ghi.com
C,25,def.com
D,21,abc.com
E,22,ghi.com
F,23,jkl.com
G,24,def.com
H,20,jkl.com
I,19,ghi.com
J,19,abc.com
K,22,def.com
L,16,jkl.com
M,15,def.com
N,27,jkl.com
O,26,abc.com
P,50,jkl.com
Q,12,def.com
R,56,abc.com
S,22,def.com
T,24,abc.com
U,35,jkl.com
V,45,ghi.com
W,20,abc.com
X,19,jkl.com
Y,18,abc.com
Z,65,ghi.com
我想要访问最多 18 至 25 岁用户的前 5 个网址。
最有效的方法是什么......而不是像第一个过滤器年龄那样逐步编写所有内部查询,而不是分组和计数......?
输出架构将是 网址(前 5 名)、用户数(18-25)
谢谢
最佳答案
除了分组之外没有其他有效的方法。
select count(name), url
from <tablename>
where age >= 18 and age <= 25
group by url
order by count(name) dsc
limit 0, 5
从我的角度来看,加快速度的唯一方法是使用集群和/或索引! 至少不需要内部查询。
关于mysql - 使用 sql 访问最多的前 n 个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44475394/