[프로그래머스] 조건에 맞는 도서 리스트 출력하기

J. Hwang·2025년 5월 2일

SQL practice

목록 보기
8/18

문제

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

주의사항

PUBLISHED_DATE의 데이트 포맷이 예시와 동일해야 정답처리 됩니다.

Input table

BOOK

BOOK_IDCATEGORYAUTHOR_IDPRICEPUBLISHED_DATE
1인문1100002020-01-01
2경제290002021-02-05
...............

Output table

BOOK_IDPUBLISHED_DATE
42021-03-15
32021-04-11

내 풀이

Oracle과 MySQL의 답이 약간 다르다. 날짜를 표시하는 형식과 날짜를 필터링하는 형식이 다르다.

Oracle

SELECT BOOK_ID, TO_CHAR(PUBLISHED_DATE, 'YYYY-MM-DD')
FROM BOOK
WHERE EXTRACT(YEAR FROM PUBLISHED_DATE) = 2021 AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC;

혹은

SELECT BOOK_ID, TO_CHAR(PUBLISHED_DATE, 'YYYY-MM-DD')
FROM BOOK
WHERE TO_CHAR(PUBLISHED_DATE, 'YYYY') = '2021' AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC;

즉 Oracle에서는 특정 연도를 찾기 위해 아래와 같은 두 방법을 사용할 수 있다.

  • EXTRACT(YEAR FROM PUBLISHED_DATE) = 2021
  • TO_CHAR(PUBLISHED_DATE, 'YYYY') = '2021'

MySQL

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d')
FROM BOOK
WHERE EXTRACT(YEAR FROM PUBLISHED_DATE) = 2021 AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC;

혹은

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d')
FROM BOOK
WHERE DATE_FORMAT(PUBLISHED_DATE, '%Y') = '2021' AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC;

즉 Oracle에서는 특정 연도를 찾기 위해 아래와 같은 두 방법을 사용할 수 있다.

  • EXTRACT(YEAR FROM PUBLISHED_DATE) = 2021
  • DATE_FORMAT(PUBLISHED_DATE, '%Y') = '2021'

코멘트

Chain-of-thought

  1. WHERE절로 조건 제한 (2021 출판, 인문)
  2. ORDER BY로 정렬 (출판일 오름차순)
  3. 출판일 형식 맞추기!!!

이번 문제는 날짜 다루는 연습을 하기 좋은 문제이다.


태그

SELECT Level1


References

https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit
https://velog.io/@syh0397/SQL-%EB%82%A0%EC%A7%9C%EC%99%80-%EC%8B%9C%EA%B0%84-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%8B%A4%EB%A3%A8%EA%B8%B0

profile
Let it code

0개의 댓글