使用sql访问最常访问的页面

时间:2017-06-10 16:05:58

标签: 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

我想要前5位网址,其中访问的用户数最多,从18岁到25岁。

最有效的方法是什么呢?比先写过所有内部查询,比如第一个过滤器年龄,而不是组和计数......?

输出架构将是 URL(前5名),CountOfUsers(18-25)

由于

2 个答案:

答案 0 :(得分:1)

除了分组之外,没有其他有效方法。

select count(name), url
   from <tablename>
 where age >= 18 and age <= 25
 group by url
 order by count(name) dsc
 limit 0, 5

从我的观点来看,加快这一点的唯一方法是使用集群和/或索引! 至少不需要内部查询。

答案 1 :(得分:0)

这对你有用,

select top 5 NameCount = Count(name), url 
from (select name, url
        from [tablename] where age >= 18 and age <= 25) dd
group by url
order by count(name) desc