조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

수이·2025년 4월 4일
0

🟢 코드카타 / SQL

목록 보기
66/81

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

조건정리

  1. 조회수가 가장 높은 게시물 조회
  2. 파일 경로 = /home/grep/scr/board_id/ + file_id + file_name + file_ext

풀이

  1. RANK로 게시물 rank 구하고
  2. 1등만 셀렉 + 확장자 연결 concat
WITH rnk_board AS
(
    SELECT board_id, RANK() OVER (ORDER BY views DESC) AS rnk 
    FROM used_goods_board
)

SELECT CONCAT('/home/grep/src/', b.board_id,
              '/',f.file_id,f.file_name,f.file_ext) AS FILE_PATH
FROM rnk_board b
INNER JOIN used_goods_file f
ON b.board_id = f.board_id
WHERE b.rnk = 1
ORDER BY file_id DESC

다른 방식으로 풀기
나는 이런 WHERE에서 서브쿼리 열어주는 방식을 좀 어려워하는 것 같다 ㅠ CTE 써서 그냥 단계별로 푸는게 더 좋은 것 같은데 뭐가 더 좋은 방식인지는 아직 잘 모르겠다

SELECT CONCAT('/home/grep/src/', b.board_id,
              '/',f.file_id,f.file_name,f.file_ext) AS FILE_PATH
FROM used_goods_board b
INNER JOIN used_goods_file f ON b.board_id = f.board_id
WHERE b.board_id = (
       SELECT board_id
       FROM used_goods_board 
       ORDER BY views DESC
       LIMIT 1
)
ORDER BY file_id DESC

0개의 댓글

관련 채용 정보