我正在尝试编写一个 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'
您似乎有两个错误:
O.TotalPaid
包含到 SUM
中,因为 HAVING
应包含聚合数据查询应该是这样的:
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);