Post

조건에 맞는 도서와 저자 리스트 출력하기

JOIN

조건에 맞는 도서와 저자 리스트 출력하기


문제 설명

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


BOOK 테이블

Column nameTypeNullableDescription
BOOK_IDINTEGERFALSE도서 ID
CATEGORYVARCHAR(N)FALSE카테고리 (경제, 인문, 소설, 생활, 기술)
AUTHOR_IDINTEGERFALSE저자 ID
PRICEINTEGERFALSE판매가 (원)
PUBLISHED_DATEDATEFALSE출판일


AUTHOR 테이블

Column nameTypeNullableDescription
AUTHOR_IDINTEGERFALSE저자 ID
AUTHOR_NAMEVARCHAR(N)FALSE저자명




문제

‘경제’ 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요. PUBLISHED_DATE의 데이트 포맷이 예시와 동일해야 정답처리 됩니다. (예시 : YYYY-MM-DD)




풀이 과정
  1. 조건 확인
    • CATEGORY‘경제’인 도서만 조회해야함
    • REVIEW_DATE의 데이트 포맷은 YYYY-MM-DD
  2. 테이블 결합 (JOIN)
    • INNSER JOIN 선택 이유 : AUTHOR_ID를 기준으로 두 테이블 모두에서 매칭되는 데이터를 가져오기 위해 사용
  3. 필요한 데이터 필터링
    • WHERE B.CATEGORY = ‘경제’ 조건을 사용하여 경제 카테고리에 속하는 도서만 필터링
  4. 결과 정렬
    • 정렬 기준에 따라 ORDER BY로 결과 정렬
      • 출판일(BLISHED_DATE) 기준으로 오름차순 정렬
  5. 날짜 형식 변환
    • TO_CHAR(B.PUBLISHED_DATE, ‘YYYY-MM-DD’)를 사용하여 날짜를 YYYY-MM-DD 형식의 문자열로 변환
  6. 최종 결과 출력
    • SELECT 절에서 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 출력
  • 교훈
    • 날짜 형식…은 출력 요구사항에 맞게 변환하는 것… 중요… 별 다슷개…




정답

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
    B.BOOK_ID, 
    A.AUTHOR_NAME, 
    TO_CHAR(B.PUBLISHED_DATE, 'YYYY-MM-DD') AS PUBLISHED_DATE
FROM 
    BOOK B
JOIN 
    AUTHOR A
ON 
    B.AUTHOR_ID = A.AUTHOR_ID
WHERE 
    B.CATEGORY = '경제'
ORDER BY 
    B.PUBLISHED_DATE ASC;


Tip

DATE 타입 형식 맞추기

  • TO_CHAR(컬럼명, ‘YYYY-MM-DD’) = ‘YYYY-MM-DD’ (VARCHAR 타입으로 변경됨)

SQL Dialect Used: Oracle




개념 확인

  • BETWEEN 연산자
    • 해당 범위 내의 데이터를 필터링
    • WHERE 컬럼명 BETWEEN 500000 AND 1999999
  • INNER JOIN
    • 두 테이블의 공통된 값을 기준으로 데이터를 연결
  • TO_CHAR 함수
    • 날짜 또는 숫자를 문자열 형식으로 변환




조건에 맞는 도서와 저자 리스트 출력하기

This post is licensed under Park Juyoung by the author.

Trending Tags