문제풀이/SQL 문제 풀이

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

RealTone 2024. 3. 5. 21:33
728x90

🔗 문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


💡 문제 풀이 및 해석

  1. 가장먼저 BOOK_ID PUBLISHED_DATE 출력해야 하므로 SELECT BOOK_ID, PUBLISHED_DATE 했다.
  2. BOOK 이라는 테이블에서 뽑아내야 하므로 FROM BOOK 추가해 줬다.
  3. 뒤에 CATEGORY = '인문' 이라는 조건이 있으므로 WHERE CATEGORY = '인문'
  4. 조건에 출판일이 2021이어야 한다는 조건이 추가로 있으므로 SUBSTR(PUBLISHED_DATE,1,4) AND조건으로 추가해줬다.
  5. 출판일 기준으로 오름차순이어야 하므로 ORDER BY PUBLISHED_DATE ASC 추가해줬다.
  6. 출력에 시간은 불필요하므로 DATE_FORMAT 함수를 이용해서 SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE SELECT문을 바꿔줬다.

⭐️ 정답 코드 및 설명

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

🤔 문제 후기

DATE_FROMAT 이라는 함수를 알지 못해서 TO_CHAR 형식으로 해서 TO_CHAR(PUBLISHED_DATE, 'YYYY-MM-DD') 으로 출력하려 했는데, 이게 deny된다는 오류가 발생해서 결국 구글링해서 DATE_FORMAT이라는 함수로 날짜를 출력한다고 해서 맞춘 문제였다. 추가로 SUBSTR 앞에 4자리를 자르기 위해서 SUBSTR(PUBLISHED_DATE,0,4) = 2021 했었는데, C++ JAVA 등과 달리 SQL 인덱스가 1부터 시작하는 부분을 까먹어서 조금 애먹었다.

728x90