✨APS (Algorithm Problem Solving)/프로그래머스 SQL

[프로그래머스 SQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 / 오라클(Oracle)

Nyan cat 2023. 4. 11. 20:00

 

📜 문제 설명

다음은 중고 거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고 거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며BOARD_IDWRITER_IDTITLECONTENTSPRICECREATED_DATESTATUSVIEWS는 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다.

 

USED_GOODS_BOARD 테이블

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

 

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

 

USED_GOODS_FILE 테이블

NAME TYPE NULLABLE
FILE_ID VARCHAR(10) FALSE
FILE_EXT VARCHAR(5) FALSE
FILE_NAME VARCHAR(256) FALSE
BOARD_ID VARCHAR(10) FALSE

 

❓ 문제

USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.

 

🔗 문제 링크

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

 

프로그래머스

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

programmers.co.kr

 

💡 문제 풀이

SUBQUERY, ||, MAX

  • 조회수가 가장 높은 게시물의 board_id를 구하고 서브쿼리화 한다
  • 해당 id를 가진 데이터에서 필요한 컬럼을 이어붙인다.
    • 오라클에선 ||, 마이에스큐엘에서는 CONCAT 함수 이용
SELECT '/home/grep/src/' || board_id || '/' || file_id || file_name || file_ext
AS file_path 
FROM used_goods_file
WHERE board_id = (
    SELECT board_id 
		FROM used_goods_board
	WHERE views = (SELECT MAX(views) FROM used_goods_board)
)
ORDER BY file_id DESC
반응형