프로그래머스 SQL Lv 1 - 조건에 부합하는 중고거래 댓글 조회하기

정새·2023년 11월 15일
0
post-thumbnail

이번에 다뤄볼 문제는 조인 및 조건을 활용하여 데이터를 조회하는 문제입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/131697
프로그래머스 기준 Lv.1 문제이며, 풀이 후 해설과 함께 정리해보도록 하겠습니다.


문제에서 주어진 요구사항은 다음과 같습니다.

1. 게시물과 댓글 테이블에서 2022년 10월에 작성된 데이터를 조회
2. 이 때, 게시글 제목, ID 및 댓글 ID, 작성자 ID, 내용, 작성일을 조회
3. 최종 결과는 댓글 작성일을 기준으로 오름차순 정렬
4. 만약 댓글 작성일이 동일하다면, 게시글 제목을 기준으로 오름차순 정렬
5. 작성일 컬럼의 데이터는 'YYYY-MM-DD' 형태로 조회

이를 해결하기 위해선 테이블 조인, 조건 및 다중 정렬 대한 처리가 각각 필요합니다.

이러한 요구사항에 맞추어 조합하여 주어진 문제에 대한 SQL문을 작성해보겠습니다.


가장 먼저 조인이 필요한 테이블에 대한 FROM 문을 작성합니다.

데이터는 BOARD_ID를 기준으로 중복 없이 조회하기 위한 조건 또한 작성해줍니다.

# ORACLE
SELECT '비워두기' 
	FROM USED_GOODS_BOARD BOARD, USED_GOODS_REPLY REPLY
    	WHERE BOARD.BOARD_ID = REPLY.BOARD_ID;

다음으로 2022년 10월에 작성된 게시글만을 조회하는 조건을 덧붙혀줍니다.

# ORACLE
SELECT '비워두기' 
	FROM USED_GOODS_BOARD BOARD, USED_GOODS_REPLY REPLY
    	WHERE BOARD.BOARD_ID = REPLY.BOARD_ID AND TO_CHAR(BOARD.CREATED_DATE, 'YYYY-MM') = '2022-10';

이후 조회가 필요한 컬럼들에 대해 SELECT 문에서 이를 명시합니다.

또한 CREATED_DATE 컬럼에 대해선 요구사항인 'YYYY-MM-DD' 포맷을 정의합니다.

# ORACLE
SELECT BOARD.TITLE, BOARD.BOARD_ID, REPLY.REPLY_ID, REPLY.WRITER_ID,
        REPLY.CONTENTS, TO_CHAR(REPLY.CREATED_DATE, 'YYYY-MM-DD') AS CREATED_DATE
    FROM USED_GOODS_BOARD BOARD, USED_GOODS_REPLY REPLY
        WHERE BOARD.BOARD_ID = REPLY.BOARD_ID AND TO_CHAR(BOARD.CREATED_DATE, 'YYYY-MM') = '2022-10';

마지막으로 전체 데이터에 대한 정렬 조건을 정의해주어 마무리합니다.

정렬 조건은 댓글 작성일, 게시글 제목에 대해 각각 오름 및 내림차순 정의합니다.

# ORACLE
SELECT BOARD.TITLE, BOARD.BOARD_ID, REPLY.REPLY_ID, REPLY.WRITER_ID,
        REPLY.CONTENTS, TO_CHAR(REPLY.CREATED_DATE, 'YYYY-MM-DD') AS CREATED_DATE
    FROM USED_GOODS_BOARD BOARD, USED_GOODS_REPLY REPLY
        WHERE BOARD.BOARD_ID = REPLY.BOARD_ID AND TO_CHAR(BOARD.CREATED_DATE, 'YYYY-MM') = '2022-10'
        	ORDER BY REPLY.CREATED_DATE ASC, BOARD.TITLE ASC;

복잡해보였지만 점진적 해결을 통해 손쉽게 해결해낼 수 있었습니다.


이번 문제 또한 단순 풀이는 맞았지만, 최적의 방법인지 알 수 없습니다.

다른 사람들의 코드를 읽고 배워가며, 최적화된 코드를 작성할 수 있도록 노력하겠습니다.

긴 글 읽어주셔서 감사합니다.

profile
intersection for analysis, modeling, science ... working on it !

0개의 댓글

관련 채용 정보