≣ 목차
링크
https://school.programmers.co.kr/learn/courses/30/lessons/164671
문제
USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.
정답 1
select concat('/home/grep/src', '/', b.board_id, '/', file_id, file_name, file_ext) as file_path
from used_goods_board b
inner join used_goods_file f
on b.board_id = f.board_id
where views = (
select max(views)
from used_goods_board
)
order by file_id desc
정답 2
with maxveiws as (
select board_id
from used_goods_board
where views in (select max(views) from used_goods_board)
)
select concat('/home/grep/src', '/', fi.board_id, '/', file_id, file_name, file_ext) as file_path
from used_goods_file fi
join maxveiws m
on m.board_id = fi.board_id
order by file_id desc;
해설
- 파일명 이어 붙이기는 concat 사용
- 조회수가 가장 높은 게시물을 찾는 '자동화'를 위해(매번 변경되고, 매번 수정할 수 없어) select로 서브 쿼리 사용
- 서브쿼리의 조건화
새롭게 이해한 내용
서브쿼리를 활용하여 조건으로 지정할 수 있다.
'[업무 지식] > MySQL' 카테고리의 다른 글
[JOIN] 저자 별 카테고리 별 매출액 집계하기 (0) | 2024.10.14 |
---|---|
[JOIN & UNION] 주문량이 많은 아이스크림들 조회하기 (0) | 2024.10.14 |
[HAVING] 우유와 요거트가 담긴 장바구니 (0) | 2024.10.13 |
[DATEDIFF] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2024.10.10 |
[응용] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2024.10.10 |