https://school.programmers.co.kr/learn/courses/30/lessons/164671
[문제]
다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며
BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS은 게시글 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_ID, FILE_EXT, FILE_NAME, BOARD_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)
아직 서브쿼리를 문제의 어느 부분을 위해 사용해야 하는지 확실히 감이 잡히지 않았다. 더 많은 문제를 풀어봐야겠다..
'SQL 문제' 카테고리의 다른 글
[프로그래머스 SQL] 5월 식품들의 총매출 조회하기 (0) | 2023.10.06 |
---|---|
[프로그래머스 SQL] 오랜 기간 보호한 동물(1) (0) | 2023.10.06 |
[프로그래머스_SQL] 조건별로 분류하여 주문상태 출력하기 (0) | 2023.10.05 |
[프로그래머스_SQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2023.10.04 |
[프로그래머스_SQL] 있었는데요 없었습니다 (0) | 2023.10.04 |