본문 바로가기
Language/DB

[Programmers | SQL | GROUP BY 문제 풀이] 카테고리 별 도서 판매량 집계하기- Solution with GROUP BY & SUM()

by ㅇ달빛천사ㅇ 2024. 6. 27.
728x90

KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기 | SQL CODEKATA

📖 카테고리 별 도서 판매량 집계하기

🏷 관련 주제 : GROUP BY SUM()




✔ (Oracle) Solution with GROUP BY & SUM()

SELECT B.CATEGORY
       , SUM(S.SALES) "TOTAL_SALES"
FROM BOOK B
     , BOOK_SALES S
WHERE B.BOOK_ID = S.BOOK_ID
      AND TO_CHAR(S.SALES_DATE, 'YYYY-MM') = '2022-01'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
실행 결과

✔ (MySQL) Solution with GROUP BY & SUM()

SELECT B.CATEGORY
       , SUM(S.SALES) TOTAL_SALES
FROM BOOK B
     , BOOK_SALES S
WHERE B.BOOK_ID = S.BOOK_ID
      AND DATE_FORMAT(S.SALES_DATE, '%Y-%m') = '2022-01'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
실행 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍

📌 오늘 만난 문제 : 2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY)총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 카테고리명을 기준으로 오름차순 정렬해주세요.


1.  BOOK_ID 칼럼으로 도서 정보 테이블(BOOK)판매 정보 테이블(BOOK_SALE)조인하여 카테고리, 판매일, 판매량 조회하기

  • Oracle & MySQL
    SELECT B.CATEGORY
           , S.SALES_DATE
           , S.SALES
    FROM BOOK B
         , BOOK_SALES S
    WHERE B.BOOK_ID = S.BOOK_ID;
    실행 결과

2.  판매일2022년 1월인 인스턴스만 조회하기

  • Oracle
    SELECT B.CATEGORY
           , S.SALES_DATE
           , S.SALES
    FROM BOOK B
         , BOOK_SALES S
    WHERE B.BOOK_ID = S.BOOK_ID
          AND TO_CHAR(S.SALES_DATE, 'YYYY-MM') = '2022-01';

  • MySQL
    SELECT B.CATEGORY
           , S.SALES_DATE
           , S.SALES
    FROM BOOK B
         , BOOK_SALES S
    WHERE B.BOOK_ID = S.BOOK_ID
          AND DATE_FORMAT(S.SALES_DATE, '%Y-%m') = '2022-01';
    실행 결과

3.  카테고리GROUP BY 해서 카테고리와 카테고리별 총 판매량 조회하기

  • Oracle
    SELECT B.CATEGORY
           , SUM(S.SALES) "TOTAL_SALES"
    FROM BOOK B
         , BOOK_SALES S
    WHERE B.BOOK_ID = S.BOOK_ID
          AND TO_CHAR(S.SALES_DATE, 'YYYY-MM') = '2022-01'
    GROUP BY B.CATEGORY;

  • MySQL
    SELECT B.CATEGORY
           , SUM(S.SALES) TOTAL_SALES
    FROM BOOK B
         , BOOK_SALES S
    WHERE B.BOOK_ID = S.BOOK_ID
          AND DATE_FORMAT(S.SALES_DATE, '%Y-%m') = '2022-01'
    GROUP BY B.CATEGORY;
    실행 결과


4.  카테고리를 기준으로 오름차순 정렬하기

  • Oracle
    SELECT B.CATEGORY
           , SUM(S.SALES) "TOTAL_SALES"
    FROM BOOK B
         , BOOK_SALES S
    WHERE B.BOOK_ID = S.BOOK_ID
          AND TO_CHAR(S.SALES_DATE, 'YYYY-MM') = '2022-01'
    GROUP BY B.CATEGORY
    ORDER BY B.CATEGORY;

  • MySQL
    SELECT B.CATEGORY
           , SUM(S.SALES) TOTAL_SALES
    FROM BOOK B
         , BOOK_SALES S
    WHERE B.BOOK_ID = S.BOOK_ID
          AND DATE_FORMAT(S.SALES_DATE, '%Y-%m') = '2022-01'
    GROUP BY B.CATEGORY
    ORDER BY B.CATEGORY;
    실행 결과

💬 무엇을 새롭게 알았는지

GROUP BY하는 쿼리를 작성해 보았다.







728x90


Top