TIL/SQL

리트코드| Students and Examinations (My SQL)

jojoon2786 2024. 9. 3. 13:37

Students
Subjects

 

Examinations

 

나의 풀이)

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인 것도 출력되도록 함.