출처
문제
USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.
문제에 대한 해석
-- 출력: 첨부파일 경로(/home/grep/src/게시글 ID/파일 ID/ 파일 이름 파일 확장자)
-- 정렬: FILE ID를 기준으로 내림차순
풀이(MYSQL)
select concat('/home/grep/src/',b.board_id,'/',f.file_id,f.file_name,f.file_ext)
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
작동순서
💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환
- FROM 절: used_goods_board테이블과 used_goods_file 테이블을 board_id를 기준으로 inner join
- WHERE 절: views 가 used_goods_board 테이블에서 가장 높은 views와 동일한 경우 필터링*
- SELECT 절: concat을 통해 '/home/grep/src/' + b.board_id+ '/' + f.file_id + '/' + f.file_name + f.file_ext을 합쳐서 조회 **
- ORDER BY 절: file_id의 내림차순
* 가장 높은 조회수의 게시글 1개만 조회해야 하기 때문에 where절에서 서브쿼리를 통해 가장높은 조회수와 동일한 조건을 지정하여 필터링 한다
** ' ' 따옴표 안에는 텍스트
조회수가 가장 높은 게시글 |
(조회수가 가장 높은 게시글) B0008의 첨부파일 |
'문제풀이 > SQL(My sql)' 카테고리의 다른 글
[문제풀이] 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.01.30 |
---|---|
[문제풀이] 저자 별 카테고리 별 매출액 집계하기 (0) | 2024.01.29 |
[문제풀이] 주문량이 많은 아이스크림들 조회하기 (1) | 2024.01.29 |
[문제풀이] 우유와 요거트가 담긴 장바구니 (0) | 2024.01.26 |
[문제풀이] 헤비 유저가 소유한 장소 (0) | 2024.01.26 |