제목: 조건에 맞는 도서와 저자 리스트 출력하기
레벨: 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를 넣으면 된다!
'SQL 문제풀이' 카테고리의 다른 글
[프로그래머스] SQL 고득점 Kit : 있었는데요 없었습니다 문제풀이 (1) | 2023.05.25 |
---|---|
[프로그래머스] SQL 고득점 Kit : 오랜 기간 보호한 동물(1) 문제풀이 (0) | 2023.05.25 |
[프로그래머스] SQL 고득점 Kit : 상품 별 오프라인 매출 구하기 문제풀이 (0) | 2023.05.25 |