使用group by和order by从SQL Server查询的多个表中选择不同的值?

使用group by和order by从SQL Server查询的多个表中选择不同的值?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正试图从加入其他表的log_表中选择不同的前10个url,它是count(url)和size 我尝试了以下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

我正试图从加入其他表的log_表中选择不同的前10个url,它是count(url)和size

我尝试了以下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。但是当我尝试以下没有大小的查询时,它会给出不同的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,它的点击率和使用的大小。url、大小来自日志表

感谢您的帮助


谢谢。

第一个查询没有返回不同url的原因是您同时按url和大小分组。当您按这两列进行分组时,将为每个值组合获得一行。因此,如果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

如果您发布代码或XML,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码”按钮(101 010),以很好地格式化和语法突出显示它!我假设每个URL都有多个
size
s。那你想带哪一个回来?