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
  • 전체
    오늘
    어제
    • 분류 전체보기 (807)
      • Python (32)
      • 프로젝트 (116)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (42)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    btsjungkook
    hotcoffeecase
    chatgpterror
    btsdischarge
    lawsuitculture
    titaniumcase
    chinanightlife
    gpterror
    classaction
    livebroadcast
    smartphonedurability
    RM
    americaparty
    college reunions
    basalcellcarcinoma
    trumpmuskclash
    youngprofessionals
    life reflection
    newpoliticalparty
    remittance
    btsreunion
    global politics
    btscomeback
    americanlaw
    homebartrend
    travel ban
    bts
    urbantrends
    뷔
    self-growth
  • 최근 댓글

  • 최근 글

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

티스토리툴바