我正在尝试选择不同的前10个网址,它是从log_table加入其他表格的计数(网址)和大小。
我尝试了以下SQL Server查询:
select distinct top 10
url, count(url) as hits,
size as data
from log_table
where log_table.IP in
(select IPAddress from IP where IP.IPId in
(select IPId from userIP where userIP.userId in
(select userId from Users)))
group by url, size
order by hits desc
它没有给我明确的网址。但是当我尝试不带大小的以下查询时,它会提供不同的URL和命中。
select distinct top 10
url, count(url) as hits
from log_table
where log_table.IP in
(select IPAddress from IP where IP.IPId in
(select IPId from userIP where userIP.userId in
(select userId from Users)))
group by url
order by hits desc
我需要做什么来选择不同的网址,它的命中和大小。 url,size来自log_table表。
感谢任何帮助。
谢谢。
答案 0 :(得分:0)
您的第一个查询未返回不同网址的原因是您正在按网址和大小进行分组。当您按这两列进行分组时,您将为每个值组合获取一行。因此,如果url“a”的大小为5和10,那么将创建两个组,[a 5]和[a 10]。你必须在size列上使用一些聚合函数才能得到回报,例如:
select top 10
url, count(url) as hits
, max(size) as size
from log_table
where log_table.IP in
(select IPAddress from IP where IP.IPId in
(select IPId from userIP where userIP.userId in
(select userId from Users)))
group by url
order by hits desc