728x90
🔗 문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 문제 풀이 및 해석
- 먼저 두 테이블을 JOIN해줘야 한다. (그래야 원하는 테이블 형태를 뽑아낼 수 있다.) 이 때, BOARD_ID가 같은 게시물을 JOIN 해주면 된다. FROM USED_GOODS_BOARD A INNER JOIN USED_GOODS_REPLY B ON A.BOARD_ID = B.BOARD_ID 을 먼저 작성해준다.
- 이 때, SELECT 해야하는 것을 해당하는 테이블에서 가져온다.
SELECT A.TITLE, A.BOARD_ID, B.REPLY_ID, B.WRITER_ID, B.CONTENTS, B.CREATED_DATE 를 추가해준다. - 출력 할 때, 시,분,초 는 불필요하므로 B.CREATED_DATE는
DATE_FORMAT(B.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE 로 바꿔준다. - 2022년 10월에 작성된 게시글만 필요하므로 WHERE DATE_FORMAT(A.CREATED_DATE, '%Y-%m')='2022-10'를 작성해준다. 이 때, 댓글이 아닌 게시글이 22년 10월 중에 작성된 것이여야 하므로 B.CREATED_DATE가 아닌 A.CREATED_DATE를 해줘야 한다.
- 마지막으로 정렬도 댓글이 달린 기준 다음에 게시글 제목으로 오름차순하는 것이므로 ORDER BY B.CREATED_DATE ASC, A.TITLE ASC 를 추가해주면 된다.
⭐️ 정답 코드 및 설명
SELECT A.TITLE, A.BOARD_ID,
B.REPLY_ID, B.WRITER_ID, B.CONTENTS,
DATE_FORMAT(B.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD A INNER JOIN USED_GOODS_REPLY B ON A.BOARD_ID = B.BOARD_ID
WHERE DATE_FORMAT(A.CREATED_DATE, '%Y-%m')='2022-10'
ORDER BY B.CREATED_DATE ASC, A.TITLE ASC
🤔 문제 후기
과일로 만든 아이스크림 만들기을 푼지 얼마 안되서 사실 그렇게 어렵진 않았다. (아마 풀이를 시작하기 전부터 어림짐작 하고 있었던 것 같다.) 다만, 중간에 실수한 점이 있는데, '22년 10월에 작성된 게시글'을 댓글로 이해해서 B.CREATED_DATE를 써놓고 왜 안되는지 문제를 3번째 읽어볼 때 알았다. SQL문제는 문제 자체의 조건이 알고리즘보다 중요하다는걸 느꼈다.
728x90
'문제풀이 > SQL 문제 풀이' 카테고리의 다른 글
[ 프로그래머스 ] 특정 옵션이 포함된 자동차 리스트 구하기 (MySQL) (0) | 2024.03.05 |
---|---|
[ 프로그래머스 ] 자동차 대여 기록에서 장기/단기 대여 구분하기 (MySQL) (0) | 2024.03.05 |
[ 프로그래머스 ] 인기있는 아이스크림 (MySQL) (0) | 2024.03.05 |
[ 프로그래머스 ] 과일로 만든 아이스크림 고르기 (MySQL) (0) | 2024.03.05 |
[ 프로그래머스 ] 조건에 맞는 도서 리스트 출력하기 (MySQL) (0) | 2024.03.05 |