SQL 문제

[프로그래머스_SQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

빙수빈수 2023. 10. 5. 12:19

https://school.programmers.co.kr/learn/courses/30/lessons/164671

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[문제]

다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 

BOARD_IDWRITER_IDTITLECONTENTSPRICECREATED_DATESTATUSVIEWS은 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다.

 

Column name Type Nullable
BOARD_ID VARCHAR(5) FALSE
WRITER_ID VARCHAR(5) FALSE
TITLE VARCHAR(5) FALSE
CONTENTS VARCHAR(5) FALSE
PRICE NUMBER FALSE
CREATED_DATE DATE FALSE
STATUS VARCHAR(5) FALSE
VIEWS NUMBER FALSE

USED_GOODS_FILE 테이블은 다음과 같으며 FILE_IDFILE_EXTFILE_NAMEBOARD_ID는 각각 파일 ID, 파일 확장자, 파일 이름, 게시글 ID를 의미합니다.

 

Column name Type Nullable
FILE_ID VARCHAR(10) FALSE
FILE_EXT VARCHAR(10) FALSE
FILE_NAME VARCHAR(10) FALSE
BOARD_ID VARCHAR(10) FALSE

 

[코드]

SELECT CONCAT('/home/grep/src/', A.BOARD_ID, '/', B.FILE_ID, B.FILE_NAME, B.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD AS A
INNER JOIN USED_GOODS_FILE AS B
ON A.BOARD_ID = B.BOARD_ID
WHERE A.VIEWS IN (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
ORDER BY B.FILE_ID DESC;

 

[고찰]

 이번 문제는 두 가지 부분만 해결하면 되는 문제였다.

 

1. 여러 문자열이나 여러 컬럼 값을 합쳐서 출력하기 위해 CONCAT(문자열1, 문자열2, ...) 함수를 사용

 

2. 조회수가 가장 높은 중고거래 게시물을 구하기 위해 서브쿼리를 사용

-> WHERE A.VIEWS IN (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)

 

 아직 서브쿼리를 문제의 어느 부분을 위해 사용해야 하는지 확실히 감이 잡히지 않았다. 더 많은 문제를 풀어봐야겠다..