Sql查询pubs示例数据库中具有最佳销售质量的商店
在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
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