본문 바로가기
MySql

MySQL Group by 및 Order By와 함께 조인에서 Where 절 사용

by 베이스 공부 2021. 2. 12.
반응형

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

그러나 다음은 오류가 발생합니다. 의도는 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

MySQL 오류 : 오류 코드 : 1111. 그룹 함수의 잘못된 사용

 

해결 방법

 

집계 함수 ( COUNT (), AVG (), SUM (), 등)는 계산시기로 인해 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

 

참조 페이지 https://stackoverflow.com/questions/10560510

 

 

반응형

댓글