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

하나·2025년 1월 12일
0

SQL TEST

목록 보기
8/9
post-thumbnail

🪄문제 분석 요약

USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일 조회

  • 댓글 작성일 기준 오름차순, 댓글 작성일이 같은 경우 게시글 제목 기준 오름차순 정렬

🪄접근법

  • USED_GOODS_BOARDUSED_GOODS_REPLY테이블을 게시글 ID인 BOARD_ID 기준으로 INNER JOIN
  • 2022-10-01 ~ 2022-10-31에 작성된 게시글만 필터링
  • CREATED_DATE날짜만 나오게 출력(현재는 시간과 함께 추출되고 있음)

🪄SQL

-- MYSQL
SELECT 
	TITLE, 
    B.BOARD_ID, 
    REPLY_ID, 
    R.WRITER_ID, 
    R.CONTENTS, 
    DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD AS B
INNER JOIN USED_GOODS_REPLY AS R ON B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31'
ORDER BY R.CREATED_DATE, TITLE;

🪄틀린 부분 수정 OR 다른 풀이

-- ORACLE
SELECT 
    TITLE, 
    B.BOARD_ID, 
    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, TITLE;

🪄관련 개념

MYSQL과 ORACLE에서의 날짜 형식 변환 함수 차이

MYSQL

DATE_FORMAT : 날짜, 시간 값을 지정된 형식의 문자열로 변환

  • DATE_FORMAT(date_value, '%Y-%m-%d %H:%i:%s')
  • 숫자 포맷팅 지원X
  • 날짜, 시간 값에만 적용 가능

날짜와 문자열 직접 비교 가능

  • -- MySQL에서 날짜 문자열을 직접 비교할 수 있습니다.
    SELECT * FROM TABLE_NAME
    WHERE CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31';
  • WHY? 날짜 문자열을 자동으로 날짜 형식으로 변환하여 비교할 수 있는 제공

ORACLE

TO_CHAR : 날짜, 숫자 또는 기타 데이터 유형을 지정된 형식의 문자열로 변환

  • TO_CHAR(date_value, 'YYYY-MM-DD HH24:MI:SS')
  • 숫자도 형식화 가능, 숫자 포맷팅 지원O
  • 날짜, 숫자에 적용 가능
  • Y%와 같은 C스타일 형식 지정자 사용X

문자열을 날짜로 변환해야 날짜 문자열 비교 가능

  • -- Oracle에서는 TO_DATE를 사용하여 문자열을 날짜로 변환해야 합니다.
    SELECT * FROM TABLE_NAME
    WHERE CREATED_DATE BETWEEN TO_DATE('2022-10-01', 'YYYY-MM-DD') 
                           AND TO_DATE('2022-10-31', 'YYYY-MM-DD');
profile
Start with hello world:)

0개의 댓글

관련 채용 정보