728x90
Group By와 Count를 사용하여 특정 컬럼에서 동일한 데이터끼리 묶어 개수 조회하기
테이블 및 컬럼 정보
귀찮으므로 ERD 는 생략하고 아래 테이블 정보로 대신한다.
school (학교 테이블)
- school_id (학교 번호) - PK
- school_name (학교 이름)
teacher (선생님 테이블)
- teacher_id (선생님 번호) - PK
- school_id (학교 번호) - PK, FK
- teacher_name (선생님 이름)
- subject (과목명)
학교 테이블(School)과 학교 선생님(Teacher) 테이블이 존재할 때 각 학교별로 과목별 선생님이 몇 명씩인지 조회하기
조회 컬럼 : 학교 번호, 학교 이름, 과목별 선생님 수
// Postgresql
select
school_id,
school_name,
coalesce(MATH, 0) MATH,
coalesce(SCIENCE, 0) SCIENCE,
coalesce(ENGLISH, 0) ENGLISH
from
school s
left join(
select
school_id,
count(case when subject = 'MATH' then 1 end) as MATH,
count(case when subject = 'SCIENCE' then 1 end) as SCIENCE,
count(case when subject = 'ENGLISH' then 1 end) as ENGLISH
from teacher
group by school_id
) t
on s.school_id = t.school_id;
728x90
댓글