나의 풀이)
SELECT a.student_id, a.student_name, b.subject_name, COUNT(c.subject_name) AS attended_exams
FROM Students aCROSS JOIN Subjects b
LEFT JOIN Examinations c ON a.student_id = c.student_id AND b.subject_name = c.subject_name
GROUP BY a.student_id, a.student_name, b.subject_name
ORDER BY a.student_id, b.subject_name;
Students 테이블과 Subjects 테이블에는 접점 컬럼이 없기 때문에 Cross join을 통해 x 의 형태로 출력
예시)
엘리스 x 수학
엘리스 x 물리학
엘리스 x 프로그래밍
LEFT JOIN으로 Examinations 을 조인하여 count 가 0인 것도 출력되도록 함.
'TIL > SQL' 카테고리의 다른 글
리트코드| average selling prices (0) | 2024.09.05 |
---|---|
리트코드| Confirmation Rate (My SQL) (1) | 2024.09.04 |
리트코드| 온도 상승(MySQL) (0) | 2024.08.22 |
프로그래머스| 상품을 구매한 회원 비율 구하기 (0) | 2024.08.14 |
프로그래머스| 자동차 대여 기록 별 대여 금액 구하기(MySQL) (0) | 2024.08.09 |