SQL에서의 중첩 테이블과 서브쿼리 활용 연습문제
SQL에서는 중첩 테이블과 서브쿼리를 사용하여 데이터를 조작하고 결과를 가져올 수 있습니다. 중첩 테이블은 하나의 쿼리 결과를 다른 쿼리의 테이블로 사용하는 것을 의미하며, 서브쿼리는 하나의 쿼리 안에서 다른 쿼리를 사용하는 것을 의미합니다.
이번 연습문제에서는 실제 데이터를 사용하여 중첩 테이블과 서브쿼리를 활용하여 원하는 결과를 얻어보도록 하겠습니다.
문제 1
다음은 학생과 과목 테이블에 관련된 데이터입니다.
학생 테이블 (students):
id | name | age |
---|---|---|
1 | Alice | 20 |
2 | Bob | 22 |
3 | Carol | 21 |
과목 테이블 (subjects):
id | name |
---|---|
1 | Math |
2 | Science |
3 | English |
학생과 과목은 Many-to-Many 관계로 연결되어 있으며, 다음 테이블을 사용하여 학생들이 수강한 과목을 조회하고자 합니다.
수강 테이블 (enrollment):
student_id | subject_id |
---|---|
1 | 1 |
1 | 2 |
2 | 1 |
3 | 2 |
3 | 3 |
위의 테이블을 기반으로 학생들이 수강한 과목명과 해당 학생의 이름을 조회하는 SQL 쿼리를 작성해보세요.
SELECT students.name, subjects.name
FROM students
INNER JOIN enrollment ON students.id = enrollment.student_id
INNER JOIN subjects ON subjects.id = enrollment.subject_id;
문제 2
문제 1에서 작성한 쿼리를 활용하여 과목별로 수강한 학생 수를 조회하고자 합니다.
위의 테이블을 기반으로 과목별로 수강한 학생 수를 조회하는 SQL 쿼리를 작성해보세요.
SELECT subjects.name, COUNT(enrollment.student_id) AS num_students
FROM subjects
LEFT JOIN enrollment ON subjects.id = enrollment.subject_id
GROUP BY subjects.name;
이렇게 중첩 테이블과 서브쿼리를 활용하여 다양한 데이터를 가져올 수 있습니다. 학생과 과목 데이터를 기반으로 원하는 분석 결과를 쉽게 도출할 수 있으며, 다른 테이블과의 조인을 통해 더 복잡한 쿼리도 작성할 수 있습니다. SQL을 효과적으로 사용하기 위해서는 중첩 테이블과 서브쿼리의 활용법을 익히는 것이 중요합니다.
References: