[프로그래머스 Lv4.] 144856번 저자 별 카테고리 별 매출액 집계하기 (ORACLE)

2024. 2. 6. 08:27·Coding Test/SQL 고득점 Kit[ORACLE]

문제 설명

다음은 어느 한 서점에서 판매중인 도서들의 도서 정보(BOOK), 저자 정보(AUTHOR) 테이블입니다.

BOOK 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.

Column name Type Nullable Description
BOOK_ID INTEGER FALSE 도서 ID
CATEGORY VARCHAR(N) FALSE 카테고리 (경제, 인문, 소설, 생활, 기술)
AUTHOR_ID INTEGER FALSE 저자 ID
PRICE INTEGER FALSE 판매가 (원)
PUBLISHED_DATE DATE FALSE 출판일

 

AUTHOR 테이블은 도서의 저자의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.

Column name  Type  Nullable Description
AUTHOR_ID INTEGER FALSE 저자 ID
AUTHOR_NAME VARCHAR(N) FALSE 저자명

 

BOOK_SALES 테이블은 각 도서의 날짜 별 판매량 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.

Column name Type Nullable Description
BOOK_ID INTEGER FALSE 도서 ID
SALES_DATE DATE FALSE 판매일
SALES INTEGER FALSE 판매량

문제

2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요.

결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요.


예시

예를 들어 BOOK 테이블과 AUTHOR 테이블, BOOK_SALES 테이블이 다음과 같다면

BOOK_ID CATEGORY AUTHOR_ID PRICE PUBLISHED_DATE
1 인문 1 10000 2020-01-01
2 경제 1 9000 2021-02-05
3 경제 2 9000 2021-03-11

 

AUTHOR_ID  AUTHOR_NAME
1 홍길동
2 김영호

 

BOOK_ID SALES_DATE SALES
1 2022-01-01 2
2 2022-01-02 3
1 2022-01-05 1
2 2022-01-20 5
2 2022-01-21 6
3 2022-01-22 2
2 2022-02-11 3

 

2022년 1월의 도서 별 총 매출액은 도서 ID 가 1 인 도서가 총 3권 * 10,000원 = 30,000원, 도서 ID 가 2 인 도서가 총 14권 * 9,000 = 126,000원 이고, 도서 ID 가 3 인 도서가 총 2권 * 9,000 = 18,000원 입니다.

저자 별 카테고리 별로 매출액을 집계하면 결과는 다음과 같습니다.

AUTHOR_ID AUTHOR_NAME  CATEGORY TOTAL_SALES
1 홍길동 인문 30000
1 홍길동 경제 126000
2 김영호 경제 18000

 

그리고 저자 ID, 카테고리 순으로 내림차순 정렬하면 다음과 같이 나와야 합니다.

AUTHOR_ID AUTHOR_NAME  CATEGORY TOTAL_SALES
1 홍길동 인문 30000
1 홍길동 경제 126000
2 김영호 경제 18000

-- 코드를 입력하세요
SELECT 
    B.AUTHOR_ID
    , A.AUTHOR_NAME
    , B.CATEGORY
    , SUM(S.SALES * B.PRICE) AS TOTAL_SALES
FROM BOOK B
    INNER JOIN AUTHOR A
    ON B.AUTHOR_ID = A.AUTHOR_ID
    INNER JOIN BOOK_SALES S
    ON B.BOOK_ID = S.BOOK_ID
WHERE TO_CHAR(S.SALES_DATE,'YYYYMM') = '202201'
GROUP BY B.AUTHOR_ID, A.AUTHOR_NAME, B.CATEGORY
ORDER BY B.AUTHOR_ID, B.CATEGORY DESC;
저작자표시 비영리 변경금지 (새창열림)

'Coding Test > SQL 고득점 Kit[ORACLE]' 카테고리의 다른 글

[프로그래머스 Lv3.] 157340번 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (ORACLE)  (0) 2024.02.06
[프로그래머스 Lv3.] 144855번 카테고리 별 도서 판매량 집계하기 (ORACLE)  (0) 2024.02.06
[프로그래머스 Lv3.] 164668번 조건에 맞는 사용자와 총 거래금액 조회하기 (ORACLE)  (0) 2024.02.06
[프로그래머스 Lv3.] 131123번 즐겨찾기가 가장 많은 식당 정보 출력하기 (ORACLE)  (1) 2024.02.06
[프로그래머스 Lv1.] 131528번 나이 정보가 없는 회원 수 구하기 (ORACLE)  (1) 2024.02.06
'Coding Test/SQL 고득점 Kit[ORACLE]' 카테고리의 다른 글
  • [프로그래머스 Lv3.] 157340번 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (ORACLE)
  • [프로그래머스 Lv3.] 144855번 카테고리 별 도서 판매량 집계하기 (ORACLE)
  • [프로그래머스 Lv3.] 164668번 조건에 맞는 사용자와 총 거래금액 조회하기 (ORACLE)
  • [프로그래머스 Lv3.] 131123번 즐겨찾기가 가장 많은 식당 정보 출력하기 (ORACLE)
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (829)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (445)
        • 백준[JAVA] (108)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    스프링
    리눅스
    시큐리티
    플러터
    데이터베이스
    프로그래머스
    python
    Spring Security
    스프링부트
    DB
    Flutter
    postgresql
    자바
    Linux
    backjoon
    baekjoon
    Oracle
    pcce 기출문제
    Java
    springboot
    CS지식
    백준
    spring
    리눅스마스터
    CS
    JPA
    데이터
    스프링 부트 쇼핑몰 프로젝트 with JPA
    리눅스마스터 1급
    programmers
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[프로그래머스 Lv4.] 144856번 저자 별 카테고리 별 매출액 집계하기 (ORACLE)
상단으로

티스토리툴바