👇 조건에 부합하는 중고거래 댓글 조회하기
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
🔓 문제 설명
USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요.
결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고,
댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해주세요.
예시 문제 데이터
[MEMBER_PROFILE]
| BOARD_ID | TITLE | CREATED_DATE |
| B0001 | 반려견 배변패드 팝니다 | 2022-10-01 |
| B0002 | 국내산 볶음참깨 | 2022-10-02 |
[USED_GOODS_REPLY]
| REPLY_ID | BOARD_ID | CONTENTS | CREATED_DATE |
| R000000001 | B0001 | 구매하겠습니다... | 2022-10-02 |
| R000000002 | B0002 | 쪽지 주세요. | 2022-10-03 |
⚡SQL Query
SELECT B.TITLE,
B.BOARD_ID,
R.REPLY_ID,
R.WRITER_ID,
R.CONTENTS,
TO_CHAR(R.CREATED_DATE, 'YYYY-MM-DD') AS CREATED_DATE
FROM USED_GOODS_BOARD B
INNER JOIN USED_GOODS_REPLY R ON B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE BETWEEN TO_DATE('2022-10-01', 'YYYY-MM-DD')
AND TO_DATE('2022-10-31', 'YYYY-MM-DD')
ORDER BY R.CREATED_DATE ASC, B.TITLE ASC;
🔎 풀이 설명
1. 테이블 조인: PK로 예상되는 BOARD_ID를 기준으로 조인 하였습니다.
2. 게시글 작성일 조건: 좌변 항수를 두고 우변 항수를 DATE 형식으로 바꿔 조건을 작성하였습니다.
3. 날짜 포맷 및 정렬
💡인사이트
1. 선행 테이블 선택
- B.CREATED_DATE에 인덱스가 있다면, 2022년 10월 데이터를 먼저 필터링할 수 있는 USED_GOODS_BOARD 테이블이 선행 테이블이 되는 것이 유리합니다..
2. NL 조인 효율성
- USED_GOODS_REPLY 테이블의 BOARD_ID 컬럼에 인덱스가 반드시 있어야 게시글 하나 당 전체 댓글 테이블을 다 뒤지는 불상사(Full Table Scan)를 막을 수 있습니다.
'🗄️ DB_이야기 > # ⚡SQL' 카테고리의 다른 글
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 서울에 위치한 식당 목록 출력하기(SELECT) (0) | 2026.04.13 |
|---|---|
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 강원도에 위치한 생산공장 목록 출력하기(SELECT) (0) | 2026.04.13 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 3월에 태어난 여성 회원 목록 출력하기(SELECT) (1) | 2026.04.13 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 흉부외과 또는 일반외과 의사 목록 출력하기(SELECT) (0) | 2026.04.13 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 조건에 맞는 도서 리스트 출력하기(SELECT) (0) | 2026.04.13 |