본문 바로가기

코딩테스트/SQL

[프로그래머스] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

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

 

프로그래머스

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

programmers.co.kr

 

나의 방법

VIEWS 기준으로 내림차순 정렬 > 최상의 VIEWS에 위치한 BOARD_ID 조회 > 해당 BOARD_ID를 가지는 파일 찾기

SELECT
    CONCAT('/home/grep/src/', FILE.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
    ORDER BY VIEWS DESC
    LIMIT 1
)
ORDER BY FILE_ID DESC

 

다른 방법

VIEWS 최댓값 조회 > 두 테이블 JOIN > 최대 VIEWS 가지는 파일 찾기

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

 

알아야 할 점

- WHERE sub query

- CONCAT