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

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

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

BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요.

조건에 맞는 도서 리스트 출력하기Lv.1

144853

https://school.programmers.co.kr/learn/courses/30/lessons/144853

해설

문제 요구 사항에 맞춰, BOOK 테이블에서 특정 조건을 만족하는 레코드를 선택하여 결과를 반환하는 쿼리입니다.

  • Name
    SELECT BOOK_ID, date_format(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
    Type
    Description

    여기서 중요한 부분은 date_format을 활용해 날짜 형식을 포맷하여야 한다는 점입니다. 이후, 문제 요구사항에서 PUBLISHED_DATE로 출력했으니 AS를 활용해 깔끔하게 맞춰주면 좋습니다.

    • date_format(PUBLISHED_DATE, "%Y-%m-%d"): PUBLISHED_DATE 컬럼의 날짜 형식을 YYYY-MM-DD 형식으로 포맷하여 선택합니다. 여기서 %Y는 네 자리 연도, %m은 두 자리 월, %d는 두 자리 일을 나타냅니다.

    • AS PUBLISHED_DATE: 포맷된 날짜를 PUBLISHED_DATE라는 이름의 별칭으로 결과에 포함시킵니다.

  • Name
    WHERE CATEGORY LIKE '%인문%'
    Type
    Description

    CATEGORY 컬럼에 '인문'이라는 단어가 포함된 레코드만을 필터링합니다.

  • Name
    AND YEAR(PUBLISHED_DATE) = 2021
    Type
    Description

    AND 연산자는 이전의 LIKE 조건과 함께 사용되어 두 조건 모두를 만족하는 레코드만을 필터링합니다. YEAR(PUBLISHED_DATE) 함수는 PUBLISHED_DATE 컬럼의 연도 부분만을 추출하여, 이 값이 2021년인 레코드만을 선택합니다.

  • Name
    ORDER BY PUBLISHED_DATE ASC
    Type
    Description

    ORDER BY 절은 결과 집합을 특정 컬럼의 값에 따라 정렬합니다. 여기서는 포맷된 PUBLISHED_DATE 컬럼을 기준으로 오름차순(ASC)으로 정렬합니다.

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

SELECT
    BOOK_ID, date_format(PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATE
FROM
    BOOK
WHERE
    CATEGORY LIKE "%인문%"
AND
    YEAR(PUBLISHED_DATE) = 2021
ORDER BY
    PUBLISHED_DATE ASC;