SELECT a01.company_code
,a01.founder
,a02.cnt
,a03.cnt
,a04.cnt
,a05.cnt
FROM company a01
LEFT JOIN
(
SELECT company_code
,COUNT(DISTINCT lead_manager_code) cnt
FROM lead_manager
GROUP BY company_code
)a02 ON a01.company_code = a02.company_code
LEFT JOIN
(
SELECT company_code
,COUNT(DISTINCT senior_manager_code)cnt
FROM senior_manager
GROUP BY company_code
)a03 ON a01.company_code = a03.company_code
LEFT JOIN
(
SELECT company_code
,COUNT(DISTINCT manager_code)cnt
FROM manager
GROUP BY company_code
)a04 ON a01.company_code = a04.company_code
LEFT JOIN
(
SELECT company_code
,COUNT(DISTINCT employee_code) cnt
FROM employee
GROUP BY company_code
)a05 ON a01.company_code = a05.company_code
ORDER BY a01.company_code
;
조인의 개념만 알면 쉽게 해결할 수 있는 문제.
이 방법보다, 모든 테이블을 LEFT JOIN 한 후 GROUP BY 하는 방법이 더 가독성 있을 것 같긴 함.