[SQL 고득점 Kit / SELECT ] Level 1 - 조건에 부합하는 중고거래 댓글 조회하기

SlowAnd·2024년 2월 11일

[Level 1] - 조건에 부합하는 중고거래 댓글 조회하기

문제

정답

SELECT B.TITLE,B.BOARD_ID, R.REPLY_ID, R.WRITER_ID,R.CONTENTS, DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_REPLY R ON B.BOARD_ID = R.BOARD_ID
WHERE EXTRACT(YEAR FROM B.CREATED_DATE) = 2022 AND EXTRACT(MONTH FROM B.CREATED_DATE) = 10 
ORDER BY R.CREATED_DATE ASC, B.TITLE ASC;

풀이

이 SQL 쿼리를 단계별로 설명하겠습니다. 이 쿼리는 USED_GOODS_BOARD 테이블과 USED_GOODS_REPLY 테이블을 결합하여 특정 조건을 만족하는 데이터를 조회하고 정렬하는 과정을 수행합니다.


1. SELECT 절

SELECT B.TITLE, B.BOARD_ID, R.REPLY_ID, R.WRITER_ID, R.CONTENTS, DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
  • SELECT 절은 조회하려는 컬럼들을 나열합니다. 여기서는 게시글의 제목(B.TITLE), 게시글 ID(B.BOARD_ID), 댓글 ID(R.REPLY_ID), 댓글 작성자 ID(R.WRITER_ID), 댓글 내용(R.CONTENTS), 그리고 댓글의 작성일(R.CREATED_DATE)을 포매팅하여 선택합니다.

  • DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d')는 댓글의 작성일을 YYYY-MM-DD 형식으로 포매팅합니다. AS CREATED_DATE를 사용하여 이 포매팅된 결과에 CREATED_DATE라는 별칭을 부여합니다.


2. FROM 절 및 JOIN

FROM USED_GOODS_BOARD B
JOIN USED_GOODS_REPLY R ON B.BOARD_ID = R.BOARD_ID
  • FROM 절은 기본적으로 데이터를 조회할 테이블을 지정합니다. 여기서는 USED_GOODS_BOARD 테이블을 B라는 별칭으로 지정합니다.

  • JOIN USED_GOODS_REPLY RUSED_GOODS_BOARD 테이블과 USED_GOODS_REPLY 테이블을 결합합니다. ON B.BOARD_ID = R.BOARD_ID 조건은 두 테이블을 게시글 ID(BOARD_ID)를 기준으로 연결합니다. USED_GOODS_REPLY 테이블에는 R이라는 별칭이 부여됩니다.


3. WHERE 절

WHERE EXTRACT(YEAR FROM B.CREATED_DATE) = 2022 AND EXTRACT(MONTH FROM B.CREATED_DATE) = 10
  • WHERE 절은 특정 조건에 맞는 데이터만 필터링하여 조회합니다. 이 경우, B.CREATED_DATE에서 연도가 2022이고, 월이 10월인 게시글만 선택합니다. EXTRACT 함수는 날짜에서 특정 부분(여기서는 연도와 월)을 추출합니다.

4. ORDER BY 절

ORDER BY R.CREATED_DATE ASC, B.TITLE ASC;
  • ORDER BY 절은 조회 결과를 특정 컬럼의 값에 따라 정렬하는 데 사용됩니다. 여기서는 댓글의 작성일(R.CREATED_DATE)을 기준으로 오름차순으로 먼저 정렬하고, 댓글 작성일이 같은 경우 게시글의 제목(B.TITLE)으로 오름차순으로 추가 정렬합니다.

0개의 댓글