본문 바로가기
SQL/SQL test

[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기

by ISLA! 2023. 10. 4.

 

문제

USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해 주세요. 결과는 댓글 작성일을 기준으로 오름차순 정렬해 주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해 주세요.

 

풀이 1

  • DATE_FORMAT()은 많이 사용하니 알아두자. 특정 형식으로 날짜형을 출력하고 싶을 때 지정한다.
  • 이 문제의 핵심은 JOIN 후, 2022년 10월에 해당하는 데이터만 추출하는 것인데 풀이 1과 풀이 2 두 가지 방법을 확인하자.
  • 풀이 1에서는 단순히 날짜형 칼럼의 구간을 지정하는 것으로, BETWEEN을 사용했다.
SELECT a.TITLE, a.BOARD_ID, b.REPLY_ID, b.WRITER_ID, b.CONTENTS, 
        DATE_FORMAT(b.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD as a
INNER JOIN USED_GOODS_REPLY as b ON a.BOARD_ID = b.BOARD_ID
WHERE a.CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31'
ORDER BY b.CREATED_DATE asc, a.TITLE asc

 

풀이 2

  • 풀이 2에서는 WHERE 절만 달라졌는데, 다른 분의 포스팅을 참고했다.
  • SUBSTR는 문자열 함수 중 하나로, 지정된 위치에서부터 일정한 길이의 문자열을 추출하는 데 사용된다
    • 날짜에서 1번째부터 7번째까지의 문자를 추출해서 일치하는 것을 찾는 방식으로 문제를 해결한다.
SELECT  A.TITLE
        , A.BOARD_ID
        , B.REPLY_ID
        , B.WRITER_ID
        , B.CONTENTS
        , DATE_FORMAT(B.CREATED_DATE, '%Y-%m-%d') AS CRAETED_DATE
  FROM  USED_GOODS_BOARD AS A
 INNER
  JOIN  USED_GOODS_REPLY AS B
    ON  A.BOARD_ID = B.BOARD_ID
 WHERE  SUBSTR(A.CREATED_DATE,1,7) = '2022-10'
 ORDER
    BY  B.CREATED_DATE ASC, A.TITLE ASC;
728x90