문제 사이트
https://school.programmers.co.kr/learn/courses/30/lessons/144853
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일(PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요.
BOOK 테이블은 다음과 같으며 BOOK_ID, CATEGORY, AUTHOR_ID, PRICE, PUBLISHED_DATE는 각각 도서 ID, 카테고리, 저자 ID, 가격, 출판일을 의미합니다.
풀이
1. 조건에 맞는 데이터 필터링
조건절(WHERE)에서 출판 연도가 2021년이고 카테고리가 '인문'인 도서만 필터링합니다.
WHERE YEAR(PUBLISHED_DATE) = 2021 AND CATEGORY = '인문'
여기서 주의할 점은 날짜 조건 조회 시 YEAR(컬럼명) 함수를 사용하면 연도를 쉽게 조회할 수 있다는 것입니다.
처음에 like를 써서 통과가 되긴했지만 좀 더 찾아보고 YEAR(컬럼)을 사용하게 되었습니다.
- YEAR(PUBLISHED_DATE) = 2021로 연도만 추출하여 정확히 해당 연도의 데이터만 조회할 수 있습니다.
2. 날짜 포맷 지정하기
출판일 포맷을 정확히 'YYYY-MM-DD' 형태로 출력해야 합니다. 이를 위해 DATE_FORMAT() 함수를 사용합니다.
DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
- %Y: 네 자리 연도 (예: 2021)
- %m: 두 자리 월 (예: 03)
- %d: 두 자리 일 (예: 15)
여기서 대소문자 구분에 유의해야 할것 같습니다.
%Y(대문자)는 네 자리 연도를, %y(소문자)는 두 자리 연도를 출력합니다. (예: %y → 21)

3. 결과 정렬하기
결과는 출판일 기준 오름차순으로 정렬합니다.
ORDER BY PUBLISHED_DATE ASC
최종 SQL 코드
SELECT
BOOK_ID,
DATE_FORMAT(PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATE
FROM BOOK
WHERE YEAR(PUBLISHED_DATE) = 2021 AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC;
출력 결과 예시

'프로그램및 언어 > SQL' 카테고리의 다른 글
[SQL 코테] 3월에 태어난 여성 회원 목록 출력하기 (1) | 2025.04.03 |
---|---|
[SQL 코테] 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2025.04.02 |
[SQL 코테] 12세 이하인 여자 환자 목록 출력하기 (0) | 2025.03.30 |
[SQL 코테] 평균 일일 대여 요금 구하기 (0) | 2025.03.27 |
[SQL 코테] 과일로 만든 아이스크림 고르기 (0) | 2025.03.26 |