[SQL/코드카타] 프로그래머스 - 조건에 부합하는 중고거래 댓글 조회 (DATE, DATE_FORMAT, USING, WHERE)

문제

https://school.programmers.co.kr/learn/courses/30/lessons/164673

 

프로그래머스

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

programmers.co.kr


✍️ 문제 요약

  • USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글
  • 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회
  • 댓글 작성일 오름차순, 제목 오름차순 정렬

내가 작성한 코드

SELECT b.title,
       b.board_id,
       r.reply_id,
       r.writer_id,
       r.contents,
       DATE(r.created_date) AS created_date
FROM used_goods_board b
JOIN used_goods_reply r
USING (board_id)
WHERE DATE(b.created_date) LIKE '2022-10%'
ORDER BY r.created_date ASC, b.title ASC;

>>> 맞는 것 같은데 오류가 난다🤔 뭐가 원인일까?
>>> 확인해보니, 위처럼 작성하니 날짜형식이 시간까지 표시가 된다. 모지?
🚨 문제점 분석
사실 이 문제는 DATE(..)를 사용해도 맞는 거라고 말씀하셨다.
▶ DATE(..)를 사용하면 시분초 없이 연원일이 나오는데, 여기서는 DATE_FORMAT()을 사용할 수 있는지를 묻는 것 같다고 하셨다.

 


코드 설명

1. 일단 두 테이블을 boar_id를 키로 JOIN

SELECT ...
FROM used_goods_board b
JOIN used_goods_reply r
USING (board_id)          <<< 🔍using (공통컬럼명): 지난 번 검색하다 이런 방법도 있어 사용해봄!

 2. '2022-10'에 등록된 게시글

WHERE DATE(b.created_date) LIKE '2022-10%'

3. SELECT절 / ORDER BY 명시

SELECT b.title,
       b.board_id,
       r.reply_id,
       r.writer_id,
       r.contents,
       DATE_FORMAT(r.created_date, '%Y-%m-%d') AS created_date
FROM used_goods_board b
JOIN used_goods_reply r
USING (board_id)
WHERE DATE(b.created_date) LIKE '2022-10%'
ORDER BY r.created_date ASC, b.title ASC;

끝.