在连接中使用Where子句,使用Group by和Order By

4 mysql sql join left-join

我正在使用MySQL classicmodels数据库.以下查询工作正常(请注意where子句)

select 
    customers.customerNumber as 'Customer ID',
    customers.customerName as 'Customer Name',
    count(orders.orderNumber) as 'Total Orders Placed'
from customers
left join orders on customers.customerNumber = orders.customerNumber
where customers.customerNumber > 200
group by
    customers.customerNumber
order by 
    3 asc
Run Code Online (Sandbox Code Playgroud)

但以下结果会导致错误.目的是仅显示已生成超过3个订单的结果行集中的客户.我究竟做错了什么?

select 
    customers.customerNumber as 'Customer ID',
    customers.customerName as 'Customer Name',
    count(orders.orderNumber) as 'Total Orders Placed'
from customers
left join orders on customers.customerNumber = orders.customerNumber
where count(orders.orderNumber) > 3
group by
    customers.customerNumber
order by 
    3 asc
Run Code Online (Sandbox Code Playgroud)

MySQL错误是:错误代码:1111.无效使用组功能

Mic*_*ski 9

聚合函数(COUNT(), AVG(), SUM(),etc)不能出现在WHERE子句中,因为它们的计算时间.相反,它们属于一个HAVING条款:

select 
    customers.customerNumber as 'Customer ID',
    customers.customerName as 'Customer Name',
    count(orders.orderNumber) as 'Total Orders Placed'
from customers
left join orders on customers.customerNumber = orders.customerNumber
group by
    customers.customerNumber
HAVING count(orders.orderNumber) > 3
order by 
    3 asc
Run Code Online (Sandbox Code Playgroud)