客户姓名显示涉及平均值的问题

问题描述 投票:0回答:1

我正在尝试编写一个 SQL 查询来显示总购买量大于所有购买的平均购买量的客户姓名。

我尝试使用下面的代码,但出现错误。

SELECT C.FirstName
FROM CUSTOMERS as C
JOIN ORDERS AS O ON C.CustomerID = O.CustomerID
GROUP BY O.CustomerID
HAVING O.TotalPaid < Avg(O.TotalPaid);

这是错误:

Error Code: 1054. Unknown column 'O.TotalPaid' in 'having clause'

sql having
1个回答
0
投票

您似乎有两个错误:

  1. 您应该将
    O.TotalPaid
    包含到
    SUM
    中,因为
    HAVING
    应包含聚合数据
  2. 您应该对平均值进行子查询以保持其恒定。

查询应该是这样的:

SELECT C.FirstName
FROM CUSTOMERS as C
JOIN ORDERS AS O ON C.CustomerID = O.CustomerID
GROUP BY O.CustomerID
HAVING SUM(O.TotalPaid) < (SELECT AVG(TotalPaid) FROM ORDERS);

另一个可能的选择应该包括在

SELECT
SUM(O.TotalPaid)
中,如下所示:

SELECT C.FirstName, SUM(O.TotalPaid)
FROM CUSTOMERS as C
JOIN ORDERS AS O ON C.CustomerID = O.CustomerID
GROUP BY O.CustomerID
HAVING SUM(O.TotalPaid) < (SELECT AVG(TotalPaid) FROM ORDERS);
© www.soinside.com 2019 - 2024. All rights reserved.