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

kiki·2023년 12월 27일
0

프로그래머스

목록 보기
17/78

문제 링크

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

문제 설명

  • BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력
  • 출판일을 기준으로 오름차순 정렬
  • PUBLISHED_DATE의 데이트 포맷이 예시와 동일해야함

정답

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

SQL은 처음이라 많은 부분을 찾아보고 풀어서 해당 문제에서 필요한 정보를 정리하는 쪽이 좋겠다.

정리

  • 날짜 기간 조건: 날짜 조건에서 <,> 등을 사용해 조건을 지정해줄 수 있다. 여기서는 특정 기간을 조회하고싶기 떄문에 BETWEEN '~' AND '~'로 조건을 지정해줬다. 여기서 BETWEEN 앞에 NOT을 붙이면 그 기간을 제외하고 조회 가능
  • 정렬: ORDER BY ~로 특정 칼럼 기준으로 정렬이 가능하다. 여기서 디폴트는 오름차순(ASC, Ascend)이고 내림차순으로 정렬하기 위해서는 뒤에 DESC(Descend)를 붙여주면 된다.
  • DATE_FORMAT(TO_CHAR): 이 문제에서 중요한 부분이었는데, 바로 데이트 포맷이 예시와 동일해야한다는 점이었다. 예시의 DATE는 2020-01-01였고 PUBLISHED_DATE의 데이트 포맷은 2020-01-10 00:00:00였다. 이를 맞춰주기 위해선 오라클에선 TO_CHAR, MySQL에서는 DATE_FORMAT을 사용해야했다. SELECT 다음에 나오는 선택지에 DATE_FORMAT을 먹여야했다. 예시와 동일하게 데이트 포맷을 조회하기 위해선 DATE_FORMAT(PUBLISHED_DATE,'%Y-%m-%d')와 같이 작성해야했다. 여기서 중요한 점은 %Y%y냐에 따라 출력이 달라진다는 점.
    • %Y-%M-%D = 2021-October-24th
    • %y-%m-%d = 21-10-24

0개의 댓글