Chapter 7-37. Mini Project : 06.Sakila SQL(1/2)

2025. 3. 26. 12:08·Database

📊 06. Mini Project 2) Sakila SQL 분석

💡 Sakila DB는 MySQL에서 제공하는 샘플 데이터베이스로, DVD 대여점의 운영 정보를 담고 있습니다. 영화, 배우, 직원, 고객, 대여 등 다양한 관계형 데이터를 연습하기에 최적의 데이터셋입니다.


📌 1️⃣ 특정 배우가 출연한 영화 목록 조회

🎯 문제: 배우 'GUINESS PENELOPE'가 출연한 영화의 제목을 모두 조회하시오.

🧠 해설:

  • actor 테이블에서 이름으로 actor_id 조회
  • film_actor로 중간 연결
  • film 테이블에서 title 추출

✅ 정답 SQL:

SELECT f.title
FROM film f
JOIN film_actor fa ON f.film_id = fa.film_id
JOIN actor a ON fa.actor_id = a.actor_id
WHERE a.first_name = 'PENELOPE' AND a.last_name = 'GUINESS';

📌 2️⃣ 모든 카테고리와 영화 수 조회

🎯 문제: 각 카테고리별 영화 수를 조회하시오.

🧠 해설:

  • category 와 film_category 조인
  • COUNT()로 집계 후 GROUP BY

✅ 정답 SQL:

SELECT c.name, COUNT(fc.film_id) AS number_of_films
FROM category c
JOIN film_category fc ON c.category_id = fc.category_id
GROUP BY c.name;

📌 3️⃣ 특정 고객의 대여 기록 조회

🎯 문제: 고객 ID가 5인 고객의 대여 영화 목록을 조회하시오.

🧠 해설:

  • rental → inventory → film 조인
  • customer_id로 필터링

✅ 정답 SQL:

SELECT r.rental_date, f.title
FROM rental r
JOIN inventory i ON r.inventory_id = i.inventory_id
JOIN film f ON i.film_id = f.film_id
WHERE r.customer_id = 5;

📌 4️⃣ 최근에 추가된 10개의 영화 조회

🎯 문제: 가장 최근에 출시된 10개의 영화 제목을 조회하시오.

🧠 해설:

  • film 테이블에서 release_year 기준 정렬 후 상위 10개 추출

✅ 정답 SQL:

SELECT title
FROM film
ORDER BY release_year DESC
LIMIT 10;

📌 5️⃣ 특정 영화에 출연한 배우 목록 조회

🎯 문제: 'ACADEMY DINOSAUR'에 출연한 배우 목록을 조회하시오.

🧠 해설:

  • film → film_actor → actor 연결

✅ 정답 SQL:

SELECT a.first_name, a.last_name
FROM actor a
JOIN film_actor fa ON a.actor_id = fa.actor_id
JOIN film f ON fa.film_id = f.film_id
WHERE f.title = 'ACADEMY DINOSAUR';

📌 6️⃣ 특정 영화를 대여한 고객 목록 조회

🎯 문제: 'ACADEMY DINOSAUR' 영화를 대여한 고객들의 이름을 조회하시오.

🧠 해설:

  • film → inventory → rental → customer 조인

✅ 정답 SQL:

SELECT DISTINCT c.first_name, c.last_name
FROM customer c
JOIN rental r ON c.customer_id = r.customer_id
JOIN inventory i ON r.inventory_id = i.inventory_id
JOIN film f ON i.film_id = f.film_id
WHERE f.title = 'ACADEMY DINOSAUR';

📌 7️⃣ 모든 고객과 가장 최근 대여 영화 조회

🎯 문제: 각 고객별로 가장 최근에 대여한 영화 제목을 조회하시오.

🧠 해설:

  • customer → rental → inventory → film 조인
  • MAX(rental_date) 사용 후 GROUP BY

✅ 정답 SQL:

SELECT c.customer_id, c.first_name, c.last_name, MAX(r.rental_date) AS last_rental_date, f.title
FROM customer c
JOIN rental r ON c.customer_id = r.customer_id
JOIN inventory i ON r.inventory_id = i.inventory_id
JOIN film f ON i.film_id = f.film_id
GROUP BY c.customer_id, c.first_name, c.last_name, f.title;

📌 8️⃣ 각 영화별 평균 대여 기간 조회

🎯 문제: 영화별 평균 대여 기간을 일 단위로 조회하시오.

🧠 해설:

  • rental_date와 return_date 차이를 DATEDIFF()로 계산 후 AVG()

✅ 정답 SQL:

SELECT f.title, AVG(DATEDIFF(r.return_date, r.rental_date)) AS avg_rental_period
FROM film f
JOIN inventory i ON f.film_id = i.film_id
JOIN rental r ON i.inventory_id = r.inventory_id
GROUP BY f.title;

🎯 마무리 요약

  • Sakila DB는 SQL 조인, 집계, 필터링, 날짜 함수까지 연습할 수 있는 훌륭한 실습용 데이터셋입니다.
  • 배우, 영화, 고객, 대여 정보를 연결하여 다양한 시나리오를 구성할 수 있습니다.
  • SQL 연습이 필요할 때 Sakila로 손풀기! 🧠💪

'Database' 카테고리의 다른 글

Chapter 7-40. NoSQL기초  (0) 2025.03.26
Chapter 7-38. Mini Project : 06.Sakila SQL(2/2)  (0) 2025.03.26
Chapter 6-36. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(7/7)  (0) 2025.03.25
Chapter 6-35. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(6/7)  (0) 2025.03.25
Chapter 6-34. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(5/7)  (0) 2025.03.25
'Database' 카테고리의 다른 글
  • Chapter 7-40. NoSQL기초
  • Chapter 7-38. Mini Project : 06.Sakila SQL(2/2)
  • Chapter 6-36. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(7/7)
  • Chapter 6-35. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(6/7)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (730) N
      • Python (32)
      • 프로젝트 (55) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41) N
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5) N
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (13) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    self-growth
    RM
    lawsuitculture
    travel ban
    urbantrends
    militarydischarge
    livebroadcast
    뷔
    americanlaw
    life reflection
    newpoliticalparty
    homebartrend
    college reunions
    hotcoffeecase
    basalcellcarcinoma
    remittance
    classaction
    chinanightlife
    trumpmuskclash
    chansmannewspick
    japanricecrisis
    smartphonedurability
    titaniumcase
    galaxys25ultra
    americaparty
    oliveoilhealth
    bts
    youngprofessionals
    foodshortage
    global politics
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 7-37. Mini Project : 06.Sakila SQL(1/2)
상단으로

티스토리툴바