Chapter 6-36. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(7/7)

2025. 3. 25. 19:16·Database

 

📌 개념 정리

이번 포스팅에서는 SQL의 고급 쿼리를 사용하여 복잡한 데이터 분석을 어떻게 해결할 수 있는지에 대해 설명합니다. 주어진 예시를 통해 여러 가지 문제를 SQL 쿼리로 해결하는 방법을 단계별로 소개할 것입니다. 쿼리 작성 시 JOIN, 서브쿼리, 그룹화 등 다양한 SQL 기능을 어떻게 활용할 수 있는지 학습할 수 있습니다.


🚦 난이도 있는 문제

1. 출판사별 평균 판매지수가 가장 높은 저자 찾기

문제 설명: 각 출판사별로 평균 판매지수가 가장 높은 저자의 이름과 그 평균 판매지수를 조회하세요.

SELECT publisher, author, AVG(sales) as avg_sales
FROM Books
GROUP BY publisher, author
ORDER BY publisher, avg_sales DESC

설명: 이 쿼리는 **출판사(publisher)**와 **저자(author)**별로 **평균 판매지수(avg_sales)**를 계산합니다. GROUP BY publisher, author를 사용해 각 출판사와 저자에 대한 그룹을 만들고, AVG(sales)로 판매지수의 평균을 구합니다. ORDER BY로 출판사별로 평균 판매지수가 높은 저자 순으로 정렬합니다.

2. 리뷰 수가 평균보다 높으면서 가격이 평균보다 낮은 책 조회

문제 설명: 리뷰 수와 가격의 전체 평균을 계산한 후, 이보다 리뷰 수는 높고 가격은 낮은 책들을 조회하세요.

SELECT title, review, price
FROM Books
WHERE review > (SELECT AVG(review) FROM Books) AND price < (SELECT AVG(price) FROM Books);

설명: 이 쿼리는 **리뷰 수(review)**와 **가격(price)**의 평균값을 서브쿼리 (SELECT AVG(review) FROM Books)와 (SELECT AVG(price) FROM Books)를 통해 계산합니다. 그 후, 리뷰 수는 평균보다 높고, 가격은 평균보다 낮은 책을 조회하는 조건을 설정합니다.

3. 가장 많은 종류의 책을 출판한 저자 찾기

문제 설명: 서로 다른 제목의 책을 가장 많이 출판한 저자를 찾으세요.

SELECT author, COUNT(DISTINCT title) as num_books
FROM Books
GROUP BY author
ORDER BY num_books DESC
LIMIT 1;

설명: COUNT(DISTINCT title)을 사용하여 각 **저자(author)**가 출판한 서로 다른 책 제목의 수를 셉니다. GROUP BY author로 저자별로 그룹화하고, ORDER BY num_books DESC로 가장 많은 책 종류를 출판한 저자를 찾습니다. LIMIT 1은 가장 많은 책을 출판한 저자만 가져옵니다.

4. 각 저자별로 가장 높은 판매지수를 기록한 책 조회

문제 설명: 각 저자별로 가장 높은 판매지수를 기록한 책의 제목과 그 판매지수를 조회하세요.

SELECT author, MAX(sales) as max_sales
FROM Books
GROUP BY author;

설명: MAX(sales)를 사용하여 각 **저자(author)**별로 가장 높은 판매지수를 조회합니다. GROUP BY author로 저자별로 그룹화하여, 각 저자의 최고 판매지수만 조회합니다.

5. 연도별 출판된 책 수와 평균 가격 비교

문제 설명: 연도별로 출판된 책의 수와 그 해 출판된 책들의 평균 가격을 비교 분석하세요.

SELECT YEAR(publishing) as year, COUNT(*) as num_books, AVG(price) as avg_price
FROM Books
GROUP BY year;

설명: YEAR(publishing)으로 출판 연도를 추출하고, COUNT(*)로 각 연도별 책 수를 계산합니다. AVG(price)로 해당 연도의 평균 가격을 구합니다. GROUP BY year로 연도별로 데이터를 그룹화하여 연도별 책 수와 가격을 비교합니다.

6. 출판사가 같은 책들 중 평점 편차가 가장 큰 출판사 찾기

문제 설명: 같은 출판사에서 출판된 책들 중 평점 편차가 가장 큰 출판사와 그 편차를 조회하세요.

SELECT publisher, MAX(rating) - MIN(rating) as rating_difference
FROM Books
GROUP BY publisher
ORDER BY rating_difference DESC
LIMIT 1;

설명: MAX(rating) - MIN(rating)을 사용하여 각 출판사의 책들에 대한 평점 차이를 계산합니다. GROUP BY publisher로 출판사별로 그룹화하고, ORDER BY rating_difference DESC로 평점 편차가 큰 출판사를 찾습니다. LIMIT 1은 가장 큰 평점 차이를 가진 출판사만 반환합니다.

7. 특정 저자의 책들 중 판매지수 대비 평점이 가장 높은 책 찾기

문제 설명: 특정 저자의 책들 중 판매지수 대비 평점이 가장 높은 책의 제목과 그 비율을 조회하세요.

SELECT title, rating / sales as ratio
FROM Books
WHERE author = '특정 저자'
ORDER BY ratio DESC
LIMIT 1;

설명: 특정 저자에 대해 rating / sales를 계산하여 판매지수 대비 평점 비율을 구합니다. ORDER BY ratio DESC로 가장 높은 비율을 가진 책을 찾고, LIMIT 1로 가장 높은 책만 반환합니다.


🚦 결론

이 포스팅에서 다룬 다양한 SQL 고급 쿼리 예시들을 통해, 복잡한 데이터 분석을 어떻게 해결할 수 있는지 배웠습니다. 서브쿼리, 그룹화, 정렬 등 SQL의 고급 기능을 사용하여 더 효율적인 데이터 처리를 할 수 있습니다.

SQL을 활용한 데이터 분석은 실무에서 매우 중요한 작업이며, 각 쿼리의 목적에 맞게 적절히 활용하는 것이 중요합니다. 여러분도 이 예시들을 따라하며 자신만의 쿼리를 작성해보세요! 🚀

'Database' 카테고리의 다른 글

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

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 6-36. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(7/7)
상단으로

티스토리툴바