1. 문제
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
USED_GOODS_BOARD 테이블과 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목(TITLE), 게시글 ID(BOARD_ID), 댓글 ID(REPLY_ID), 댓글 작성자 ID(WRITER_ID), 댓글 내용(CONTENTS), 댓글 작성일(CREATED_DATE)을 조회하는 문제. 결과는 댓글 작성일(CREATED_DATE)을 기준으로 오름차순 정렬하고, 만약 댓글 작성일이 같다면 게시글 제목(TITLE)을 기준으로 오름차순 정렬해야 함.
2. 풀이
출력해야 하는 데이터는 다음과 같다.
- USED_GOODS_BOARD 테이블 :
- 게시글 제목 : TITLE
- 게시글 ID : BOARD_ID
- USED_GOODS_REPLY 테이블 :
- 댓글 ID : REPLY_ID
- 댓글 작성자 ID : WRITER_ID
- 댓글 내용 : CONTENTS
- 댓글 작성일 : CREATED_DATE
두 테이블의 데이터를 출력해야 하므로 JOIN을 반드시 해야 한다. JOIN은 참조 관계인 BOARD_ID 컬럼을 기준으로 잡으면 된다.
요구사항 :
- 2022년 10월에 작성된 게시글 : WHERE TO_CHAR(used_goods_board.created_date, 'YYYYMM') = '202210'
- 댓글 작성일 기준 오름차순 정렬, 댓글 작성일이 같다면 게시글 제목 기준 오름차순 정렬 :
ORDER BY used_goods_reply.created_date, used_goods_board.title
✏️ 정답 쿼리
SELECT bo.title,
bo.board_id,
re.reply_id,
re.writer_id,
re.contents,
TO_CHAR(re.created_date, 'YYYY-MM-DD') AS created_date
FROM used_goods_board bo
JOIN used_goods_reply re ON re.board_id = bo.board_id
WHERE TO_CHAR(bo.created_date, 'YYYYMM') = '202210'
ORDER BY re.created_date, bo.title;
=> 테이블명을 다 적기엔 너무 기므로 테이블 별칭(alias) 사용
'[Programmers] > - SQL' 카테고리의 다른 글
[Oracle][Programmers] 흉부외과 또는 일반외과 의사 목록 출력하기 (0) | 2025.05.24 |
---|---|
[Oracle][Programmers] 인기있는 아이스크림 (0) | 2025.05.24 |
[Oracle][Programmers] 과일로 만든 아이스크림 고르기 (0) | 2025.05.22 |
[Oracle][Programmers] 조건에 맞는 도서 리스트 출력하기 (1) | 2025.05.21 |
[Oracle][Programmers] 평균 일일 대여 요금 구하기 (0) | 2025.05.20 |