조건에 맞는 도서와 저자 리스트 출력하기
JOIN
조건에 맞는 도서와 저자 리스트 출력하기
문제 설명
다음은 어느 한 서점에서 판매 중인 도서들의 도서 정보 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 | 저자명 |
문제
‘경제’ 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요. PUBLISHED_DATE의 데이트 포맷이 예시와 동일해야 정답처리 됩니다. (예시 : YYYY-MM-DD)
풀이 과정
- 조건 확인
CATEGORY
가 ‘경제’인 도서만 조회해야함REVIEW_DATE
의 데이트 포맷은 YYYY-MM-DD
- 테이블 결합 (JOIN)
- INNSER JOIN 선택 이유 :
AUTHOR_ID
를 기준으로 두 테이블 모두에서 매칭되는 데이터를 가져오기 위해 사용
- INNSER JOIN 선택 이유 :
- 필요한 데이터 필터링
- WHERE B.
CATEGORY
= ‘경제’ 조건을 사용하여 경제 카테고리에 속하는 도서만 필터링
- WHERE B.
- 결과 정렬
- 정렬 기준에 따라 ORDER BY로 결과 정렬
- 출판일(
BLISHED_DATE
) 기준으로 오름차순 정렬
- 출판일(
- 정렬 기준에 따라 ORDER BY로 결과 정렬
- 날짜 형식 변환
- TO_CHAR(B.
PUBLISHED_DATE
, ‘YYYY-MM-DD’)를 사용하여 날짜를 YYYY-MM-DD 형식의 문자열로 변환
- TO_CHAR(B.
- 최종 결과 출력
- SELECT 절에서 도서 ID(
BOOK_ID
), 저자명(AUTHOR_NAME
), 출판일(PUBLISHED_DATE
) 출력
- SELECT 절에서 도서 ID(
- 교훈
- 날짜 형식…은 출력 요구사항에 맞게 변환하는 것… 중요… 별 다슷개…
정답
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 함수
- 날짜 또는 숫자를 문자열 형식으로 변환
Useful link
This post is licensed under Park Juyoung by the author.