-
leecode - 1280. Students and ExaminationsSQL 문제 2024. 2. 27. 17:44
문제
Write a solution to find the number of times each student attended each exam.
Return the result table ordered by student_id and subject_name.
The result format is in the following exampleSELECT s.student_id, s.student_name, sub.subject_name, COUNT(e.student_id) AS attended_exams FROM Students s CROSS JOIN Subjects sub LEFT JOIN Examinations e ON s.student_id = e.student_id AND sub.subject_name = e.subject_name GROUP BY s.student_id, s.student_name, sub.subject_name ORDER BY s.student_id, sub.subject_name;
내가 생각하지 못한 점은 cross join이였다.
cross join은 x와 y를 다 곱하는 join으로 여기서는 각 학생마다 과목의 개수를 알아야 하므로
student와 subject를 cross join 하여 학생마다 각 과목을 부여하고
부여한 뉴 테이블을 left join을 통해 다시 연결하여 각 학생마다의 과목 수를 count 할 수 있게 한다.
1280. Students and Examinations
'SQL 문제' 카테고리의 다른 글
leeCode - 1661. Average Time of Process per Machine (1) 2024.02.27 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) 2024.01.29 프로그래머스 - 입양 시각 구하기(2)_set @ (0) 2024.01.09 프로그래머스 - 조건에 부합하는 중고거래 댓글 조회하기 (0) 2024.01.09 프로그래머스 - 오프라인/온라인 판매 데이터 통합하기 (0) 2024.01.09