mysql - 使用 sql 访问最多的前 n 个页面

标签 mysql sql

我正在尝试编写最有效的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/

相关文章:

mysql - 如何向mySql 数据库的表中添加具有自动递增值的列?

sql - 是否有一个函数可以让我输出 json 数组中元素的当前索引?

mysql - 按第一个表的结果分组的第二个表的总和

mysql - 在mysql中进行字符串比较后获得最佳记录

sql - 非聚集索引会增加什么样的开销?

sql - 列出所有捐赠总额大于某物的捐赠者

多对多关系中的 SQL 默认值

SQL查询在内部联接期间连接两列

mysql - SQL:如何根据条件从表中删除行

php - Mysql同时更新多个文本框和上传多个文件