[LeetCode-SQL 50] 1280. Students and Examinations

코린이·2025년 6월 1일

SQL 문제 풀이 (MySQL)

목록 보기
58/96

❓ 문제

Students
+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| student_id    | int     |
| student_name  | varchar |
+---------------+---------+

student_id는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
이 테이블의 각 행에는 학교 내 학생 한 명의 ID와 이름이 포함됩니다.

Subjects
+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| subject_name | varchar |
+--------------+---------+

subject_name은 이 테이블의 기본 키(고유 값을 가진 열)입니다.
이 테이블의 각 행에는 학교의 과목 이름이 하나씩 포함됩니다.

Examinations
+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| student_id   | int     |
| subject_name | varchar |
+--------------+---------+

이 테이블에는 기본 키(고유 값을 가진 열)가 없습니다. 중복이 있을 수 있습니다.
학생 테이블의 각 학생은 과목 테이블의 모든 코스를 수강합니다.
이 테이블의 각 행은 ID가 student_id인 학생이 subject_name의 시험에 참석했음을 나타냅니다.

각 학생이 각 시험에 출석한 횟수를 구하는 솔루션을 작성합니다.

학생id 및 과목이름 순으로 정렬된 결과 테이블을 반환합니다.

자세한 문제 내용은 사이트 참고...


❗️ 문제 풀이

SELECT
    A.student_id
    , A.student_name
    , B.subject_name
    , COUNT(C.student_id) AS attended_exams
FROM Students A 
    CROSS 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
; 

🔗 Reference

https://leetcode.com/problems/students-and-examinations/?envType=study-plan-v2&envId=top-sql-50

0개의 댓글