Notice
Recent Posts
Recent Comments
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

Yeongjun's Blog

조건에 부합하는 중고거래 댓글 조회하기(프로그래머스) 본문

개발/DB-SQL

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

yeongjun_333 2024. 7. 6. 15:33

프로그래머스 코딩테스트 SQL > SELECT

문제설명

Table: USED_GOODS_BOARD, USED_GOODS_REPLY

USED_GOODS_BOARD Column

  • BOARD_ID: 게시글 id
  • TITLE: 게시글 제목

USED_GOODS_REPLY Column

  • REPLY_ID: 댓글 id
  • WRITER_ID: 댓글 작성자 id
  • CONTENTS: 댓글 내용
  • CREATED_DATE: 댓글 작성일

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

CREATED_DATE의 포맷이 예시의 포맷과 일치해야 정답처리 됩니다.

문제해결

  • 여러 테이블 조인 시 동일한 이름의 열이 있을 수 있어 명확한 참조를 위해 UGB, UGR로 지명
  • CREATED_DATE의 예시 포맷과 일치해야 하기에 DATE_FORMAT 사용
  • 테이블의 보드 id와 댓글의 보드 id가 일치함 -> UGR.BOARD_ID = UGB.BOARD_ID
  • 2022년 10월에 작성된 것들만 확인을 위해 →
    WHERE YEAR(UGB.CREATED_DATE) = 2022 AND MONTH(UGB.CREATED_DATE) = 10
  • 결과는 댓글 작성일을 기준으로 오름차순 → UGR.CREATED_DATE ASC
  • 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 → UGB.TITLE ASC
SELECT
    UGB.TITLE,
    UGB.BOARD_ID,
    UGR.REPLY_ID, 
    UGR.WRITER_ID,
    UGR.CONTENTS,
    DATE_FORMAT(UGR.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD UGB, USED_GOODS_REPLY UGR
WHERE UGR.BOARD_ID = UGB.BOARD_ID AND YEAR(UGB.CREATED_DATE) = 2022 AND MONTH(UGB.CREATED_DATE) = 10
ORDER BY UGR.CREATED_DATE ASC, UGB.TITLE ASC