감 잃지말고 개발하기

[프로그래머스] [Oracle] [Level 1] [INNER JOIN] 조건에 부합하는 중고거래 댓글 조회하기 본문

프로그래머스/Oracle

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

persii 2023. 3. 13. 11:01

문제

USED_GOODS_BOARD 테이블

Column name Type Nullable Description
BOARD_ID VARCHAR(5) FALSE 게시글 ID
WRITER_ID VARCHAR(50) FALSE 작성자 ID
TITLE VARCHAR(100) FALSE 게시글 제목
CONTENTS VARCHAR(1000) FALSE 게시글 내용
PRICE NUMBER FALSE 가격
CREATED_DATE DATE FALSE 작성일
STATUS VARCHAR(10) FALSE 거래상태
VIEWS NUMBER FALSE 조회수

USED_GOODS_REPLY 테이블

Column name Type Nullable Description
REPLY_ID VARCHAR(10) FALSE 댓글 ID
BOARD_ID VARCHAR(5) FALSE 게시글 ID
WRITER_ID VARCHAR(50) FALSE 작성자 ID
CONTENTS VARCHAR(1000) TRUE 댓글 내용
CREATED_DATE DATE FALSE 작성일

위 두 개의 테이블은 각각 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_REPLY 테이블이다.

이때, 2022년 10월에 작성된 게시글을 기준으로 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성하시오. 

결과는 댓글 작성일을 기준으로 오름차순으로 정렬하되, 만약 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬하시오. 

 

주의사항

CREATED_DATE의 포맷은 '2022-10-02'(YYYY-MM-DD) 형식으로 처리되어야 한다.


접근방법

1. 현재 접속한 세션의 날짜 형식을 알아보기 위해 NSL_SESSION_PARAMETERS를 조회한다.

2.  2022년 10월에 작성된 게시글만을 기준으로 하기 위해 WHERE절에 비교연산자 LIKE를 이용한다.


해결

 

출력결과




 추가 설명 

1. NSL_SESSION_PARAMETERS

나라마다, 혹은 개인마다 설정해 놓은 날짜 형식이 다르기 때문에 날짜 데이터 검색의 경우 현재 접속한 세션(sesison)의 날짜 형식을 확인하는 것이 필요한데, 이때 사용하는 테이블이 바로 NSL_SESSION_PARAMETERS이다.

 

바로 위의 두 테이블이 저장되어 있는 DB의 경우를 조회해 보면 다음과 같다.

 

SQL문

 

출력결과



이 DB의 경우 날짜 포맷이 'DD-MON-RR'의 형식으로 저장되는 것을 확인할 수 있다. 

이에 따라 본문의 WHERE절에서 비교연산자 LIKE를 이용해 '%-OCT-22'로 작성하여 주어진 조건문을 처리했음을 알 수 있다.