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 사용
'SQL' 카테고리의 다른 글
프로그래머스 SQL(11) - 재구매가 일어난 상품과 회원 리스트 구하기 (1) | 2023.10.29 |
---|---|
프로그래머스 SQL(10) - 조건별로 분류하여 주문상태 출력하기 (0) | 2023.08.23 |
프로그래머스 SQL문제(8) - 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2023.08.09 |
프로그래머스 SQL문제(6) - 주문량이 많은 아이스크림들 조회하기 (0) | 2023.08.09 |
프로그래머스 SQL문제(5) - 그룹별 조건에 맞는 식당 목록 출력하기 (1) | 2023.08.09 |