데이터 놀이터
String, Date - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 본문
728x90
1. 문제
USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서
조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요.
첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요.
기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고,
파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요.
조회수가 가장 높은 게시물은 하나만 존재합니다.
https://school.programmers.co.kr/learn/courses/30/lessons/164671
2. 문제 조건
- 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회 -> ORDER BY, LIMIT
- 파일경로 : /home/grep/src/게시물 ID/파일 ID + 파일 이름. 파일 확장자 -> CONCAT
- 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬 -> ORDER BY
3. 코드 작성
/*
1. 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회
2. 파일경로 : /home/grep/src/게시물 ID/파일 ID + 파일 이름. 파일 확장자
*/
SELECT CONCAT('/home/grep/src/', B.BOARD_ID, '/'
, F.FILE_ID, F.FILE_NAME, F.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_FILE AS F
JOIN USED_GOODS_BOARD AS B ON F.BOARD_ID = B.BOARD_ID
WHERE F.BOARD_ID = (SELECT BOARD_ID
FROM USED_GOODS_BOARD
ORDER BY VIEWS DESC
LIMIT 1)
ORDER BY FILE_ID DESC;
4. 회고
- 문자열 자르기 함수(LEFT, RIGHT, SUBSTR)는 비교적 익숙했지만 문자열 합치기 함수는 처음 보았다. 처음에 Python처럼 +를 썼는데 Mysql에서는 CONCAT 함수를 써야한다.
- CONCAT(a,b,c) : abc 합쳐서 나오게 하기
- CONCAT_WS(구분자, a, b, c) : abc 사이에 구분자를 넣어서 나오게 하기
728x90
'SQL' 카테고리의 다른 글
String, Date - 오랜 기간 보호한 동물(2) (0) | 2023.08.28 |
---|---|
String, Date - 조건에 맞는 사용자 정보 조회하기 (0) | 2023.08.28 |
String, Date - 취소되지 않은 진료 예약 조회하기 (0) | 2023.08.24 |
String, Date - 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.08.24 |
String, Date - 카테고리 별 상품 개수 구하기 (0) | 2023.08.22 |