제목: 조건에 맞는 도서와 저자 리스트 출력하기

레벨: Level2

 

문제를 풀어보자

 

 

 

딱 봤을 때 문제는

 

BOOK 테이블과 AUTHOR 테이블을 조인하여 합친 뒤 

필요한 컬럼을 조건에 맞게 빼오면 된다.

 

 

필요 컬럼: BOOK_ID, AUTHOR_NAME, PUBLISHED_DATE

조건 : 1. 카테고리 중 경제 카테고리에 속할 것 2. 출판일을 기준으로 오름차순

 

오키 쉽다 가보자고~

 

 

처음에는 이렇게 작성했었는데 틀렸다.

그리고 문제를 다시 보니 주의사항이 붙어있었다.

 

 

하지만 내가 작성한 코드의 결과를 보니 조금 달랐다.

 

바로 년도-월-일 시:분:초 까지 나온 것~

 

참고로 문제의 데이터 구조는 이렇게 생겼는데..

 

문제가 되는 published_date의 타입은 DATE로

데이트 타입의 서식은 YYYY-MM-DD가 맞다.

 

하지만 코드 작성할 땐 아닌갑네.. 🤔

 

그럼 이제 날짜의 형식을 변경해주는 함수를 찾아 나섰다.

 

그것은 바로 DATE_FORMAT!

 

 

DATE_FORMAT(변환하고자 하는 컬럼명(또는 데이터), '바꾸고자 하는 날짜형식')

 

으로 입력하면 된다.

 

그래서 DATE_FORMAT(BOOK.PUBLISHED_DATE, '%Y-%m-%d')

 

라고 적으면 YYYY-MM-DD의 결과값을 얻을 수 있다!

 

 

 

성공~

 

 

최종정리

 

SELECT BOOK.BOOK_ID as BOOK_ID, AUTHOR.AUTHOR_NAME as AUTHOR_NAME,
DATE_FORMAT(BOOK.PUBLISHED_DATE, '%Y-%m-%d') as PUBLISHED_DATE

 

select에는 내가 가져오고자 하는 컬럼명을 써준다.

이때 2개의 테이블에서 가져오니까 테이블명.컬럼명 으로 작성해야 한다.

as 뒤에는 결과창에 나타날 컬럼명을 작성하는 것으로 as를 쓰지 않으면 기존 컬럼명이 그대로 들어간다.


FROM BOOK 

→ 데이터를 가져올 테이블을 지정, BOOK테이블에서 데이터를 가져올 것이다.


LEFT JOIN AUTHOR ON BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID

→ BOOK테이블과 AUTHOR 테이블을 합친다.

이때 left join으로 book, author테이블을 결합하는데 기준 테이블의 왼쪽에 테이블을 붙인다는 것이다.

이렇게 하면 book에는 있으나 author테이블에는 없는 값은 null로 출력이 된다.

on 뒤에는 두 테이블이 동일하게 가지고 있는 컬럼을 연결한다.


WHERE BOOK.CATEGORY = '경제'

→ 표시할 데이터의 조건을 작성한다. 경제 카테고리의 책만 표시할 것이니 카테고리를 경제라고 지정한다.


ORDER BY BOOK.PUBLISHED_DATE ASC;

어떤것을 기준으로 정렬할 것인지 작성한다.

출판일을 기준으로 할 것이기 때문에 출판일 컬럼(BOOK.PUBLISHED_DATE)을 넣는다.

order by는 기본적으로 오름차순이지만 프로그래머스 답안 제출시 정확도를 높이기 위해 오름차순으로 하는 ASC를 추가하였다.

 

반대로 내림차순으로 하고 싶다면 ASC 대신 DESC를 넣으면 된다!

 

 

+ Recent posts