[programmers] SQL Lv. 3 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

2025. 1. 9. 11:58·Algorithm Solving/SQL

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 설명
다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS은 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다.


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


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

예시
USED_GOODS_BOARD 테이블이 다음과 같고


USED_GOODS_FILE 테이블이 다음과 같을 때


SQL을 실행하면 다음과 같이 출력되어야 합니다.


풀이

주어진 문제를 4단계로 나누면 다음과 같다.

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

 

1. JOIN

USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서의 조회이므로,
두 테이블을 join해준다.
두 테이블이 모두 borad_id 컬럼이 있고, 해당 컬럼이 외래키 참조된 테이블로 보이기때문에 inner join으로 해줬다.

SELECT *
FROM FROM USED_GOODS_BOARD B
    JOIN USED_GOODS_FILE F ON B.BOARD_ID = F.BOARD_ID

 

2. MAX()

조회수가 가장 높은 중고거래 게시물을 추출해야했고, 조회수가 가장 높은 게시물은 하나만 존재한다는 조건이 있었다.
1번에서 만든 조회문에 WHERE절을 추가한다.

SELECT *
FROM FROM USED_GOODS_BOARD B
    JOIN USED_GOODS_FILE F ON B.BOARD_ID = F.BOARD_ID
WHERE B.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)

WHERE절에서 VIEWS가 가장 큰 VIEW인 경우를 추렸다.

서브쿼리를 활용해서 MAX(VIEWS)를 전달하도록 했다.

 

3. ORDER BY

첨부파일 경로는 FILE_ID를 기준으로 내림차순 정렬

SELECT *
FROM USED_GOODS_BOARD B
    JOIN USED_GOODS_FILE F ON B.BOARD_ID = F.BOARD_ID
WHERE B.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
ORDER BY F.FILE_ID DESC

 

4. CONCAT()

첨부파일 경로를 조회하는 SQL문을 작성
기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 

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

기본적인 파일 경로와, USED_GOODS_FILE 테이블의 컬럼값을 문자열 연산(문자열 합치기)해야했다.
CONCAT을 활용하여 문제 조건에 맞게 조합하고, 컬럼명은 AS를 이용해서 'FILE_PATH'로 출력했다.


제출

-- 코드를 입력하세요
SELECT 
    CONCAT('/home/grep/src/', F.BOARD_ID, '/', F.FILE_ID, F.FILE_NAME, F.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD B
    JOIN USED_GOODS_FILE F ON B.BOARD_ID = F.BOARD_ID
WHERE B.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
ORDER BY F.FILE_ID DESC
저작자표시 비영리 변경금지 (새창열림)

'Algorithm Solving > SQL' 카테고리의 다른 글

[programmers] SQL Lv. 4 - 저자 별 카테고리 별 매출액 집계하기  (0) 2025.01.13
[programmers] SQL Lv. 4 - 주문량이 많은 아이스크림들 조회하기  (0) 2025.01.10
[programmers] SQL Lv. 4 - 우유와 요거트가 담긴 장바구니  (1) 2025.01.08
[programmers] SQL Lv. 1 - 과일로 만든 아이스크림 고르기  (1) 2025.01.08
[programmers] SQL Lv. 2 - 동명 동물 수 찾기  (0) 2022.10.19
'Algorithm Solving/SQL' 카테고리의 다른 글
  • [programmers] SQL Lv. 4 - 저자 별 카테고리 별 매출액 집계하기
  • [programmers] SQL Lv. 4 - 주문량이 많은 아이스크림들 조회하기
  • [programmers] SQL Lv. 4 - 우유와 요거트가 담긴 장바구니
  • [programmers] SQL Lv. 1 - 과일로 만든 아이스크림 고르기
기만나🐸
기만나🐸
공부한 내용을 기록합시다 🔥🔥🔥
  • 기만나🐸
    기만나의 공부 기록 🤓
    기만나🐸
  • 전체
    오늘
    어제
    • ALL (147)
      • TIL (Today I Learned) (56)
      • Dev Projects (15)
      • Algorithm Solving (67)
        • Java (52)
        • SQL (15)
      • Certifications (8)
        • 정보처리기사 실기 (8)
  • 인기 글

  • 태그

    join
    BOJ
    DFS
    GROUP BY
    Google Fonts
    java
    dp
    websocket
    sql
    그리디
    Subquery
    Firebase
    greedy
    시뮬레이션
    programmers
    jpa
    백트래킹
    자료구조
    jwt
    백준
    CSS
    완전탐색
    bootstrap
    프로그래머스
    jQuery
    javascript
    다이나믹프로그래밍
    HTML
    mysql
    BFS
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기만나🐸
[programmers] SQL Lv. 3 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
상단으로

티스토리툴바