본문 바로가기
SQL/코딩테스트

[프로그래머스 / MySQL] 조건에 맞는 도서와 저자 리스트 출력하기

by Hi_heidi 2024. 2. 1.

문제

💡 '경제'카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요.

 

테이블 형태

BOOK / AUTHOR
출력 결과 예시

 

풀이

SELECT B.BOOK_ID
	, A.AUTHOR_NAME
	, DATE_FORMAT(B.PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK AS B
    JOIN AUTHOR AS A ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE B.CATEGORY = '경제'
ORDER BY B.PUBLISHED_DATE

 

해설

FROM BOOK AS B
    JOIN AUTHOR AS A ON B.AUTHOR_ID = A.AUTHOR_ID
  •  '경제'카테고리에 속하는 도서의 도서ID, 저자명, 출판일을 출력해야 한다 → BOOK(B)테이블과 AUTHOR(A)테이블의 정보가 모두 들어있는 도서가 출력되어야 하므로 공통컬럼인 저자ID(AUTHOR_ID)를 기준으로 INNER JOIN한다
WHERE B.CATEGORY = '경제'
  • WHERE문에서 조건을 설정하여 경제 카테고리 도서들을 필터링한다
SELECT B.BOOK_ID
	, A.AUTHOR_NAME
    , DATE_FORMAT(B.PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
  • 결과 예시와 동일한 컬럼을 선택한다
  • B테이블의 출판일은 DATE 형태인데, 실제 코드를 실행했을 때 시:분:초도 같이 출력되므로 DATE_FORMAT 을 사용해 ‘YYYY-mm-dd’ 형태로 포맷을 지정해준다
DATE_FORMAT(date, format)
날짜 포맷에서 사용할 수 있는 형식 지정자 종류

 

ORDER BY B.PUBLISHED_DATE

출판일을 기준으로 오름차순 정렬한다