[LeetCode] 1280. Students and Examinations

단간단간·2024년 4월 2일

SQL 문제

목록 보기
11/12

문제 링크:

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

회고:

  • MySQL에서 CROSS JOIN은 두 테이블 간의 모든 가능한 행 조합을 생성한다. 이 조인 방식은 ON 절이 없으며, 첫 번째 테이블의 각 행을 두 번째 테이블의 모든 행과 결합하여 결과 집합을 만든다.
  • CROSS JOIN은 대규모 테이블에서는 결과 집합이 매우 클 수 있어서, 성능에 영향을 줄 수 있다. (조심)
  • WHERE 절에 특정 조건을 잘 걸어주면 CROSS JOININNER JOIN 처럼 쓸 수 있다. (그러나 굳이? 비효율적)

MySQL

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 C.student_id = A.student_id 
                              AND C.subject_name = B.subject_name
GROUP BY 
    A.student_id, 
    B.subject_name
ORDER BY 
    A.student_id, 
    B.subject_name;
profile
simple is best

0개의 댓글