MySQL-使用子查询查找平均值

MySQL-使用子查询查找平均值,mysql,sql,subquery,Mysql,Sql,Subquery,我对这个查询的语法有问题。我试图从每个国家返回一家公司的最大总数 这些表如下所示: Orders Columns OrderID CustomerID EmployeeID OrderDate RequiredDate OrderDetails Columns OrderID ProductID UnitPrice Quantity Products Columns ProductID ProductName QuantityPerUni

我对这个查询的语法有问题。我试图从每个国家返回一家公司的最大总数

这些表如下所示:

Orders
 Columns
  OrderID
  CustomerID
  EmployeeID
  OrderDate
  RequiredDate

OrderDetails
 Columns
  OrderID
  ProductID
  UnitPrice
  Quantity

Products
 Columns
  ProductID
  ProductName
  QuantityPerUnit
  UnitPrice

Customers
 Columns
  CustomerID
  CompanyName
  ContactName
  Country
我尝试了以下方法:

SELECT
    T1.Country,
    CompanyName,
    T1.OrderSum
FROM
    (SELECT
        C.Country,
        C.CompanyName,
        SUM(UnitPrice * Quantity) AS OrderSum
    FROM Customers C
        JOIN Orders O
            ON C.CustomerID = O.CustomerID
        JOIN OrderDetails D
            ON D.OrderID = O.OrderID
    GROUP BY C.Country) T1
            JOIN 
            -- TOP PAYMENT TOTALS BY COUNTRY
            (SELECT COUNTRY, 
                    MAX(OrderSum) AS OrderSum
             FROM
            -- PAYMENT TOTALS BY CUSTOMER
                (SELECT     C.Country,
                            C.CompanyName,
                            SUM(UnitPrice * Quantity) AS OrderSum
                 FROM Customers C
                    JOIN Orders O1
                        ON O1.CustomerID = C.CustomerID
                    JOIN OrderDetails D1
                        ON D1.OrderID = O1.OrderID
                 GROUP BY C.COUNTRY, C.CompanyName) T2
             GROUP BY COUNTRY) T3
        ON T1.COUNTRY = T3.COUNTRY
            AND T1.OrderSum = T3.OrderSum
ORDER BY Country;
此查询仅返回三个国家/地区:

Ireland Hungry Owl All-Night Grocers    57317.3900
Norway  Sant Gourmet    5735.1500
Poland  Wolski  Zajazd  3531.9500
但是,我尝试的这个查询返回所有国家/地区,但我不确定它是否正确,因为我没有像在上一个查询中那样包含“max”值:

SELECT
    T1.Country,
    CompanyName,
    T1.OrderSum
FROM
    (SELECT
        C.Country,
        C.CompanyName,
        SUM(UnitPrice * Quantity) AS OrderSum
    FROM Customers C
        JOIN Orders O
            ON C.CustomerID = O.CustomerID
        JOIN OrderDetails D
            ON D.OrderID = O.OrderID
    GROUP BY C.CompanyName) T1
GROUP By Country
ORDER BY Country;
我也不确定我是否正确计算了订单总数,这可能是我的错误。但我正试图从每个国家找到订单总量最大的公司。
对不起,所有的文字

以下查询将仅列出每个国家/地区订单总额最大的公司:

SELECT A.Country, A.CompanyName, A.OrderSum
FROM (
    SELECT
        C.Country,
        C.CompanyName,
        SUM(D.UnitPrice * D.Quantity) AS OrderSum
    FROM Customers C
        JOIN Orders O ON C.CustomerID = O.CustomerID
        JOIN OrderDetails D ON D.OrderID = O.OrderID
    GROUP BY
        C.Country, C.CustomerID
) A
JOIN (
    SELECT
        S.Country, MAX(S.OrderSum) as MaxSum
    FROM (
        SELECT
            C.Country,
            C.CompanyName,
            SUM(D.UnitPrice * D.Quantity) AS OrderSum
        FROM Customers C
            JOIN Orders O ON C.CustomerID = O.CustomerID
            JOIN OrderDetails D ON D.OrderID = O.OrderID
        GROUP BY
            C.Country, C.CustomerID
        ) S
    GROUP BY
        S.Country
) B ON A.Country = B.Country
WHERE
    A.Country = B.Country AND
    A.OrderSum = B.MaxSum
ORDER BY
    A.Country, A.CompanyName
;
[更新]

请注意,上面的SQL遵循在列出的查询中计算
OrderSum
的方式。鉴于表
Products
包含
QuantityPerUnit
UnitPrice
,我怀疑您的
OrderSum
也应该乘以
QuantityPerUnit
——在这种情况下,您需要修改
OrderSum
的数学