Sql查询pubs示例数据库中具有最佳销售质量的商店

Sql查询pubs示例数据库中具有最佳销售质量的商店,sql,sql-server,pubs,Sql,Sql Server,Pubs,在pubs数据库中,我想查询销售质量最高的商店。 我执行以下查询, select stores.stor_id, sum(sales.qty) as sumqty from stores join sales on stores.stor_id = sales.stor_id group by stores.stor_id, stores.stor_name 结果: +-------+------+ |stor_id|sumqty| +-------+------+ |6380 |8

在pubs数据库中,我想查询销售质量最高的商店。 我执行以下查询,

select stores.stor_id, sum(sales.qty) as sumqty
from stores
join sales on stores.stor_id = sales.stor_id
group by stores.stor_id, stores.stor_name
结果:

+-------+------+
|stor_id|sumqty|
+-------+------+
|6380   |8     |
+-------+------+
|7066   |125   |
+-------+------+
|7067   |90    |
+-------+------+
|7131   |130   |
+-------+------+
|7896   |60    |
+-------+------+
|8042   |80    |
+-------+------+
我需要的结果是

+-------+------+
|stor_id|sumqty|
+-------+------+
|7131   |130   |
+-------+------+
你能给我一些建议吗?
谢谢。

简单的方法,使用
选择前1名
按描述排序

select top 1 sales.stor_id, sum(sales.qty) as sumqty
from stores
join sales on stores.stor_id = sales.stor_id
group by sales.stor_id
order by 2 desc;
不管怎样,为什么您需要加入
商店
?我认为从
销售
表就足够了:

select top 1 sales.stor_id, sum(sales.qty) as sumqty
from sales
group by sales.stor_id
order by 2 desc;
如果结果的最大值为两条或多条记录,则上述查询将失败

使用此选项可以处理以下问题:

select sales.stor_id, MAX(sumqty) as sumqty from (select sales.stor_id, sum(sales.qty) as sumqty
from sales
group by sales.stor_id) sales

如果您有两个销售数量相同的门店

我加入门店的原因是我想获取门店详细信息,如门店名称。前两个查询是有效的,但正如我所知,关键字TOP仅受SQLServer支持。我希望查询是可移植的。最后一个查询不起作用。消息“Msg 4104,16级,状态1,第2行”失败。多部分标识符“sales.stor_id”无法绑定。感谢您的更新,但很抱歉,您的最新查询仍然无法处理错误消息“Msg 8120,级别16,状态1,第3行列‘sales.stor_id’在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。”如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击“代码示例”按钮(
{}
)在编辑器工具栏上很好地格式化和语法突出显示它!
Select a.stor_id, max(sumqty)
From (

select sales.stor_id, sum(sales.qty) as sumqty
from stores
join sales on stores.stor_id = sales.stor_id
group by sales.stor_id

) a 
Group by a.stor_id