Advanced Select
- 회사 위계 구조
Founder(설립자) > Lead Manager > Senior Manager(선임 관리자) > Manager(관리자) > Employee(직원)- [Company_code, founder name, lead manager 총 인원 수, senior manager 총 인원 수, manager 총 인원 수, employee 총 인원수] 를 출력하는 쿼리를 작성해라.
- company_code 기준으로 오름차순 정렬해라.
유의할 점)
1. 중복 레코드를 포함하고 있음.
2. company_code는 문자열이므로, 숫자순으로 정렬해서는 안됨. 예를 들어 C_1, C_2, C_10 이렇게 있다면 C_1, C_10, C_2 이렇게 정렬해야 한다.
LEFT JOIN
을 통해 조회 해야 함COUNT(DISTINT )
에 대한 사용ERROR 1055 (42000) at line 1: Expression #2 of SELECT list is not
in GROUP BY clause and contains nonaggregated column
'run_ndb7mrwglbl.c.founder' which is not functionally dependent
on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by
select c.company_code, c.founder,
count(distinct lm.lead_manager_code),
count(distinct sm.senior_manager_code),
count(distinct mg.manager_code),
count(distinct e.employee_code)
from Company c
left join Lead_Manager lm on c.company_code = lm.company_code
left join Senior_Manager sm on lm.company_code = sm.company_code
left join Manager mg on sm.company_code = mg.company_code
left join Employee e on mg.company_code = e.company_code
group by c.company_code, c.founder
order by c.company_code
오늘의 교훈. 너무 어렵게 꼬와서 생각하지 말고, 쉽게 생각하자!
그리고 해커랭크 서버.. sql 서버 특히나 너무 느리다.
난 계속 조회해가면서 결과 확인하면서 하는걸 좋아하는데..
이거 DB만 그대로 가져와서 DBeaver에서 하고 싶음 ㅜㅜ