본문 바로가기
코딩테스트/programming_SQL

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

by prometedor 2023. 10. 31.

CONCAT, MAX , 서브쿼리 이용하기

CONCAT(컬럼1, 컬럼2, 컬럼3) 

MAX(컬럼)

 

CONCAT : 문자열을 이어서 출력하고싶을 때 사용

MAX : 해당 컬럼의 최댓값을 조회할 때 사용

 

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

 

프로그래머스

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

programmers.co.kr

 

 

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

 

1. USED_GOODS_BOARD 테이블과 USED_GOODS_FILE 테이블을 BOARD_ID 열을 기준으로 JOIN 하도록 한다.

2. 주요 조건은 USED_GOODS_BOARD 테이블의 VIEWS 열이 서브쿼리에서 계산한 최대값과 같은 행을 선택하는 것이다.

서브쿼리는 SELECT MAX(VIEWS) FROM USED_GOODS_BOARD를 사용하여 최대 VIEWS 값을 검색한다.

3. CONCAT 함수를 사용하여 /home/grep/src/에 BOARD_ID, FILE_ID, FILE_NAME, 그리고 FILE_EXT 값을 조합하여 파일경로를 생성한다.

4. 결과를 USED_GOODS_FILE 테이블의 FILE_ID를 기준으로 내림차순으로 정렬한다.

=> 쿼리의 결과는 USED_GOODS_BOARD 테이블에서 VIEWS 열 값이 최대값인 행과 관련된 파일의 경로가 됩니다.