【发布时间】:2022-11-23 01:51:48
【问题描述】:
一直在为这个问题苦苦挣扎,无法弄清楚。我的简化表架构是:
- SalesOrderHeader(SalesOrderID int,ShipToAddressID int),
- SalesOrderDetails(SalesOrderID int,ProductID int),
- 地址(ShipToAddressID int,城市 nvarchar),
- 产品(产品 ID 整数,产品类别整数)
- ProductCategory(ProductCategoryID int,名称 nvarchar)。
我试图找到 3 个最受欢迎的城市(交付订单最多的城市)以及这些城市中最受欢迎的产品类别,但不幸的是,无法正常工作。
select count(*) as OrderNum, ProductCategory.Name, City from SalesLT.SalesOrderDetail left join SalesLT.SalesOrderHeader on SalesLT.SalesOrderDetail.SalesOrderID = SalesLT.SalesOrderHeader.SalesOrderID left join SalesLT.Address on SalesLT.Address.AddressID = SalesOrderHeader.ShipToAddressID left join SalesLT.Product on SalesOrderDetail.ProductID = Product.ProductID left join SalesLT.ProductCategory on ProductCategory.ProductCategoryID = Product.ProductCategoryID where City in (select top(3) City from SalesLT.SalesOrderHeader left join SalesLT.Address on SalesLT.Address.AddressID = SalesOrderHeader.ShipToAddressID group by City order by Count(*) desc) group by City, ProductCategory.Name order by count(*) desc我试图更改查询以使其只为每个城市返回 1 个位置,但没有成功。很高兴听到建议,谢谢。
【问题讨论】:
-
请添加几行示例数据和预期结果。
标签: sql sql-server