使用group by和order by从SQL Server查询的多个表中选择不同的值?
我正试图从加入其他表的log_表中选择不同的前10个url,它是count(url)和size 我尝试了以下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
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。那你想带哪一个回来?