根据 Northwind 数据库的销售额获取前 5 名供应商

Taking the top 5 suppliers based on sales from Northwind database

如何根据销售额获取前 5 名供应商?

我有以下数据库:

我尝试了多种解决方案,这是最接近的一个,但我知道这是错误的,因为一个供应商不止一次出现。

SELECT TOP 5 
    (od.UnitPrice * (1 - od.Discount) * od.Quantity) total_sales,    
    od.Quantity, od.UnitPrice, od.Discount, S.ContactName
FROM
    [Order Details] od
INNER JOIN 
    Products p ON p.ProductID = od.ProductID
INNER JOIN 
    Suppliers s ON s.SupplierID = p.SupplierID
ORDER BY 
    total_sales DESC

销售额的总和由以下公式提供:

SUM(UnitPrice * (1 - Discount) * Quantity)

如有任何帮助,我们将不胜感激!

您需要按供应商分组

SELECT TOP (5) 
    s.CompanyName,
    s.ContactName,
    SUM(od.UnitPrice * (1 - od.Discount) * od.Quantity) total_sales,
FROM
    Suppliers s
INNER JOIN 
    Products p ON s.SupplierID = p.SupplierID
INNER JOIN
    [Order Details] od ON p.ProductID = od.ProductID
GROUP BY
    s.SupplierID,
    s.CompanyName,
    s.ContactName
ORDER BY 
    total_sales DESC;

注意 Suppliers 的主键如何在分组中,即使它没有被选中。