使用子查询聚合:出现错误1111。我如何解决它?

Aggregation using subquery: Error 1111 occurs. How do I fix it?

请理解我使用Google翻译器是因为我的英语不熟练

首先,我在使用 mysql 时遇到错误 1111。

问题是在客户table.

中找到平均图书table销售额高于每个客户平均值的客户的名字

目前我写的代码是:

1)

select customer.name from customer, Orders 
where avg(Orders.saleprice) < 
(select avg(Orders.saleprice) from Orders, customer 
where Orders.custid = customer.custid AND Orders.custid = 1
group by orders.custid);
select customer.name from customer, Orders, book
where avg(Orders.saleprice) < 
(select avg(Orders.saleprice) from Orders, customer 
where Orders.custid = customer.custid group by orders.custid);

在2)的情况下,我尝试一次比较值,但是代码失败,因为出现错误1111。在 1) 的情况下,代码编写时只有一个 custid 设置为 '1'。

上图是每位顾客购买金额的平均值table。

上图是这本书销量的平均值table。

这是我第一次使用订阅的 YouTuber 推荐的 Whosebug,所以我没有经验,英语也没有经验,但是任何帮助将不胜感激。

您可以通过以下方式解决问题:

-- select customers with average salesprice
select 
    customers.*,
    avg(saleprice) as avgsaleprice
from customers
join orders on customers.id = orders.customer_id
group by customers.id, customers.name
-- filter result for customers having average greater then common order average 
having avgsaleprice > (
    select 
        avg(saleprice) as avgsaleprice
    from orders
);

查看 fiddle SQLize.online