본문 바로가기
SQL

프로그래머스 SQL문제(9) - 조건에 맞는 도서와 저자 리스트 출력하기

by 김랑해 2023. 8. 23.

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

 

프로그래머스

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

programmers.co.kr

 

SELECT BOOK_ID, AUTHOR_NAME, TO_DATE(PUBLISHED_DATE, 'YYYY-MM-DD') PUBLISHED_DATE
FROM BOOK B
INNER JOIN AUTHOR A
ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE CATEGORY = '경제'
ORDER BY PUBLISHED_DATE

당황스러운 일이 발생했다 바로.. ORDER BY를 넣었더니

결과가 이렇게 나온다는 거다;;

그러면 조인할 때 publish date를 서브쿼리로 먼저 정리해주고 order by를 해야하나?

일단 해보자

SELECT B.BOOK_ID, A.AUTHOR_NAME, B.PUBLISHED_DATE
FROM (SELECT BOOK_ID, CATEGORY, AUTHOR_ID, TO_DATE(PUBLISHED_DATE, 'YYYY-MM-DD') PUBLISHED_DATE FROM BOOK) B
INNER JOIN AUTHOR A
ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE CATEGORY = '경제'
ORDER BY B.PUBLISHED_DATE

결과는 똑같이 나온다;

큰일났다

그리고 년도도 이상하게 출력된다 뭐지? 다른 건 2020 이런 식의 년도를 가지고 있는데 코드만 돌리면 년도가 이상하게 출력되었다

ㅋㅋㅋ TO_DATE가 아니라 TO_CHAR이라고 해야지... 

 

SELECT BOOK_ID, AUTHOR_NAME, TO_CHAR(PUBLISHED_DATE, 'YYYY-MM-DD') PUBLISHED_DATE
FROM BOOK B
INNER JOIN AUTHOR A
ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE CATEGORY = '경제'
ORDER BY PUBLISHED_DATE

 

 

+번외) DATE함수에 TO_DATE를 적용하면 문제가 생긴다고 한다. 오라클 내부의 어쩌구 저쩌구(사실 몰라도 됨)로 인해서 년도가 저렇게 출력된다고 하네요

 

<LEARNING POINT>
날짜 함수에 형식을 지정하기 위해선 TO_CHAR 사용