【发布时间】:2021-06-06 04:23:04
【问题描述】:
我非常坚持解决在 SQL 中获得我想要的东西的问题。我已经能够在 excel 中实现相同的目标,但我正在将解决这个问题作为一个学习步骤,以便更好地理解 SQL。想象一下以下两个 Excel 表在 SQL Server 数据库中也是 1:1 的:
产品
销售 - 这有 8000 行
而我想看到的结果如下:
到目前为止,我已经能够使用以下 SQL 脚本获取每个类别和产品名称的计数:
SELECT
dp.ProductCategoryName,
dp.ProductName,
sum(fs.SalesAmount) as 'TotalSalesAmount'
FROM
dbo.Product dp
JOIN dbo.Sales fs ON
fs.ProductID = dp.ProductID
GROUP BY
dp.ProductCategoryName, dp.ProductName, fs.SalesAmount
ORDER BY
sum(fs.SalesAmount)
但这与我想要的结果相差甚远。我想计算每个类别下每个产品的总销售额,然后只返回每个类别中销量最高的前 2 个产品。我不确定在计算总和时如何获得不同的产品名称和类别。有人可以帮我解决这个问题,因为这一切都非常令人困惑!我正在尝试了解我需要采取的步骤。
【问题讨论】: