🤷♀️ 문제
USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.
ℹ️ 테이블
- 중고거래 게시판 정보Column name Type Nullable
BOARD_ID VARCHAR(5) FALSE WRITER_ID VARCHAR(50) FALSE TITLE VARCHAR(100) FALSE CONTENTS VARCHAR(1000) FALSE PRICE NUMBER FALSE CREATED_DATE DATE FALSE STATUS VARCHAR(10) FALSE VIEWS NUMBER FALSE - 중고거래 게시판 첨부파일 정보Column name Type Nullable
FILE_ID VARCHAR(10) FALSE FILE_EXT VARCHAR(5) FALSE FILE_NAME VARCHAR(256) FALSE BOARD_ID VARCHAR(10) FALSE
✅ 답안
1. MYSQL .ver
SELECT
CONCAT('/home/grep/src/', A.BOARD_ID, '/', B.FILE_ID, B.FILE_NAME, B.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD A
LEFT JOIN USED_GOODS_FILE B ON (B.BOARD_ID = A.BOARD_ID)
WHERE A.VIEWS = (
SELECT
MAX(VIEWS)
FROM USED_GOODS_BOARD Z
)
ORDER BY B.FILE_ID DESC
;
2. ORACLE .ver
SELECT
'/home/grep/src/'||A.BOARD_ID||'/'||B.FILE_ID||B.FILE_NAME||B.FILE_EXT AS FILE_PATH
FROM USED_GOODS_BOARD A
LEFT JOIN USED_GOODS_FILE B ON (B.BOARD_ID = A.BOARD_ID)
WHERE A.VIEWS = (
SELECT
MAX(VIEWS)
FROM USED_GOODS_BOARD Z
)
ORDER BY B.FILE_ID DESC
;
🌟 CHECK POINT
- 문자열 합치기
- ORACLE ⇒ CONCATE 또는 ‘||’ 사용‘STR1’ || ‘STR2’ || ‘STR3’ || … : STR1 + STR2 + STR3 + …
- CONCAT : 2개의 문자열만 합침 EX) CONCAT(CONCAT(STR1, STR2), STR3) : STR1 + STR2 + STR3
- ‘||’ : 여러개의 문자열 합침
- CONCAT(STR1, STR2) : STR1 + STR2
- MYSQL ⇒ CONCAT 사용
- ORACLE과 달리 여러 문자열 합침 가능!
- NULL을 입력하면 ‘NULL’로 반환
- CONCAT(STR1, STR2, STR3, …) : STR1 + STR2 + STR3 + ….
- ORACLE ⇒ CONCATE 또는 ‘||’ 사용‘STR1’ || ‘STR2’ || ‘STR3’ || … : STR1 + STR2 + STR3 + …
- MAX(), MIN()
- MAX(COL) : TABEL에서 MAX 값 ⇒ MAX값의 행을 조회하진 않음!
- MAX(COL) ~ GROUP BY ~ : GROUP 중 MAX 값
'공부 > CodingTest' 카테고리의 다른 글
[프로그래머스/SQL] 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.07.19 |
---|---|
[프로그래머스/SQL] 조건에 맞는 사용자 정보 조회하기 (0) | 2023.07.19 |
[프로그래머스/SQL] 진료과별 총 예약 횟수 출력하기 (0) | 2023.07.18 |
[프로그래머스/SQL] 자동차 평균 대여 기간 구하기 (0) | 2023.07.17 |
[프로그래머스/SQL] 평균 일일 대여 요금 구하기 (0) | 2023.07.17 |