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

임정민·2023년 5월 27일

SQL 문제풀이

목록 보기
45/53
post-thumbnail

SQL 공부중 입니다. ✍✍✍

문제

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

풀이

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

BOARD_ID로 JOIN 할 수 있는 두 테이블 USED_GOODS_BOARD, USED_GOODS_FILE 에서 USED_GOODS_BOARD의 가장 큰 VIEWS의 BOARD_ID를 구하고 이에 관한 USED_GOODS_FILE B.BOARD_ID,B.FILE_ID,B.FILE_NAME, B.FILE_EXT 정보를 출력하는 문제였습니다.🐏🐏🐏

다른 테이블에 조건을 설정하기 위해 WHERE + 서브쿼리 형태의 구문을 작성하고 문제에서 원하는 형식의 데이터로 변환해주기 위해 CONCAT()함수로 묶어주었습니다.🐓🐓🐓

저의 풀이 이외에 아래와 같이

SELECT CONCAT('/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 (SELECT *, RANK() OVER(ORDER BY VIEWS DESC) R
                            FROM USED_GOODS_BOARD
                    ) a
                    WHERE a.R = 1
                 )
ORDER BY FILE_ID DESC

RANK() OVER 구문으로 정렬된 순위를 구하고 R = 1 인 테이블을 구하는 서브쿼리로 해결한 풀이도 볼 수 있었습니다.

감사합니다.🐋🐋🐋

profile
https://github.com/min731

0개의 댓글