Data Engineering/SQL
Programmers: 조건에 부합하는 중고거래 댓글 조회하기 (MySQL)
도비(Doby)
2023. 9. 3. 02:48
https://school.programmers.co.kr/learn/courses/30/lessons/164673
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Level I
1. USED_GOODS_BOARD
와 USED_GOODS_REPLY
를 각 t1
, t2
로 Alias(별칭)을 칭하여 간단하게 쿼리를 작성할 수 있게 해주었습니다.
2. 중복되는 필드에 대해서 어느 테이블의 필드를 가져올 것인지 SELECT
절에서 .(dot)
을 통해 표현한 것을 확인할 수 있습니다.
3. 제출 양식에 대해 DATE
의 포맷이 시간을 제외해야 했기 때문에 DATE_FORMAT
함수를 써서 CREATED_DATE
라는 필드로 이름을 바꾸어주었습니다.
4. JOIN
과 ON
을 사용하여 t1
에 t2
를 JOIN
시키면서 BOARD_ID
를 ON
으로 두어 쿼리를 보내도록 했습니다.
5. WHERE
절은 BETWEEN
과 AND<c/ode> 절을 사용하여 10월에 해당하는 데이터만 가져오도록 조건을 걸었습니다.
6. ORDER BY
를 통해 우선적으로 CREATED_DATE
를 기준으로 정렬하고, CREATED_DATE
가 일치한다면 TITLE
을 기준으로 정렬할 수 있도록 해주었습니다.
SELECT t1.TITLE, t1.BOARD_ID, t2.REPLY_ID, t2.WRITER_ID, t2.CONTENTS, DATE_FORMAT(t2.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD AS t1
JOIN USED_GOODS_REPLY AS t2
ON t1.BOARD_ID = t2.BOARD_ID
WHERE t1.CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31'
ORDER BY t2.CREATED_DATE ASC, t1.TITLE ASC