[프로그래머스 LV.2] 조건에 맞는 도서와 저자 리스트 출력하기 — MySQL 정답 & 해설

2025. 11. 29. 17:20·코딩테스트/MYSQL

🔗 1. 문제 URL

프로그래머스 문제 바로가기 👉
https://school.programmers.co.kr/learn/courses/30/lessons/144854

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


 

📝 2. 문제 요구사항 정리

이 문제는 BOOK 테이블과 AUTHOR 테이블을 JOIN하여
“경제” 카테고리에 해당하는 도서와 저자 정보를 조회하는 문제입니다.

출력 형식에서 중요한 부분은 출판일(PUBLISHED_DATE) 을
형식에 맞게 DATE_FORMAT으로 변환해야 한다는 점입니다.

✔ 요구사항 요약

  • BOOK 테이블과 AUTHOR 테이블 JOIN
  • B.CATEGORY가 ‘경제’인 책만 조회
  • 출력: BOOK_ID, AUTHOR_NAME, PUBLICSHED_DATE
  • PUBLICSHED_DATE는 ‘YYYY-MM-DD’ 형식으로 변환
  • 출판일 기준 오름차순 정렬

 


 

💡 3. 핵심 개념: DATE_FORMAT으로 날짜 형식 변환

MySQL의 DATE_FORMAT(date, format) 함수는
날짜를 원하는 형식으로 가공할 때 사용됩니다.

이번 문제에서 요구하는 출력 형식은 다음과 같습니다.

 
%Y-%m-%d → 예) 2022-03-15

반면 다음과 같은 형식과는 의미가 다릅니다.

 
%Y-%M-%D %M → 영어 월 (January) %D → 1st / 2nd / 3rd 같은 서수(Ordinal) 날짜

즉, 표기를 잘못 사용하면 출력이 전혀 다르게 나오기 때문에
정확한 포맷을 선택하는 것이 핵심 포인트입니다.

 


 

📘 DATE_FORMAT 주요 포맷 정리표

 


 

✅ 4. 정답 SQL 코드

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

 


 

💬 5. 풀이하면서 느낀 점

이번 문제는 JOIN 자체보다
DATE_FORMAT 함수의 포맷 형태를 정확히 구분하는 것이 핵심이었습니다.

특히 다음 두 표현이 완전히 다르다는 점을 다시 한 번 상기하게 되었고,

  • %Y-%M-%D → 영어 월 + 서수 날짜
  • %Y-%m-%d → 숫자 월 + 숫자 날짜(문제에서 요구하는 형식)

문제 요구사항을 맞추려면 정확한 포맷을 선택해야 함을 다시 느꼈습니다.
앞으로도 SQL 문제를 풀 때 날짜 포맷 요구조건을 꼼꼼히 보는 습관을 가져야겠다고 생각하게 된 문제였습니다.

 


 

궁금하신 점이나 포스팅에 대한 피드백이 있다면 댓글로 편하게 남겨주세요.
도움이 되셨다면 공감이나 댓글 한 줄 남겨주시면 포스팅을 이어가는 데 큰 힘이 됩니다. 😊

'코딩테스트 > MYSQL' 카테고리의 다른 글

[프로그래머스 LV.2] 재구매가 일어난 상품과 회원 리스트 구하기 — MySQL 정답 & 해설  (0) 2025.12.03
[프로그래머스 LV.2] 성분으로 구분한 아이스크림 총 주문량 — MySQL 정답 & 해설  (0) 2025.12.01
[프로그래머스 LV.2] 조건에 맞는 사원 정보 조회하기 — MySQL 정답 & 해설  (0) 2025.11.29
[프로그래머스 LV.2] ROOT 아이템 구하기 — MySQL 정답 & 해설  (0) 2025.11.27
[프로그래머스 LV.2] 업그레이드 된 아이템 구하기 — MySQL 정답 & 해설  (0) 2025.11.21
'코딩테스트/MYSQL' 카테고리의 다른 글
  • [프로그래머스 LV.2] 재구매가 일어난 상품과 회원 리스트 구하기 — MySQL 정답 & 해설
  • [프로그래머스 LV.2] 성분으로 구분한 아이스크림 총 주문량 — MySQL 정답 & 해설
  • [프로그래머스 LV.2] 조건에 맞는 사원 정보 조회하기 — MySQL 정답 & 해설
  • [프로그래머스 LV.2] ROOT 아이템 구하기 — MySQL 정답 & 해설
작지만 꾸준한 성장으로
작지만 꾸준한 성장으로
contact
  • 작지만 꾸준한 성장으로
    파랑새
    작지만 꾸준한 성장으로
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • IT (3)
      • 코딩테스트 (23)
        • 알고리즘 (12)
        • MYSQL (11)
      • 패션 (0)
      • 독후감 (0)
      • TIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Pandas groupby agg
    데이터 전처리 파이프라인
    프로그래머스 lv.0
    코테
    프로그래머스 lv.1
    모델 추론
    코딩테스트
    sql 코딩테스트
    자바
    백준
    mysql
    long format
    공공데이터 전처리
    프로그래머스 lv.2
    프로그래머스
    wide format
    Pandas pivot
    Programmers
    파이썬
    와이드 포맷 롱 포맷
    데이터베이스
    파이썬코테
    알고리즘
    CPU Bound
    SWEA
    python3
    I/O Bound
    데이터 리모델링
    Python
    Pandas melt
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
작지만 꾸준한 성장으로
[프로그래머스 LV.2] 조건에 맞는 도서와 저자 리스트 출력하기 — MySQL 정답 & 해설
상단으로

티스토리툴바