[전체 데이터 삭제]라는 표현은 조금 거시기하거고...
[조건을 만족하는 데이터 삭제]라는 표현이 맞을 듯 하구요.
서브쿼리가 단독으로 수행될 때는 제공자 역할을 하는 서브쿼리라 하고
이 경우엔 서브쿼리가 단독으로 수행된것이 아니라 메인쿼리의 컬럼과 비교하고 있으므로
이 경우에는 확인자 역할을 한다고 합니다.
제공자 역할은 서브쿼리 수행결과를 메인쿼리에 조건으로 제공하는 것이고
확인자 역할은 메인쿼리의 매행마다 서브쿼리를 수행하여 확인하는 과정을 거치게 됩니다.
메인(a)의 매 행마다 a.department_id 를 조건으로 서브쿼리를 수행해서 결과가 있는지 확인하고
결과가 있으면 a의 해당 레코드를 삭제합니다.
위의 쿼리에서 sum 조건은 Where 절에 올 수 없습니다.
sum 조건은 Having 절에 주셔야 합니다.