CODEKATA SQL5

COZY·2024년 5월 22일

CODEKATA

목록 보기
11/11
post-thumbnail

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

✔️문제 포인트
1. 조회수가 가장 높은 게시물 (한 가지만 존재)
2. 첨부파일 경로 출력
:경로는 /home/grep/src/board_id/file_id,file_name,file_ext 형식으로 지정.
3. file id 기준 내림차순 정렬 조회

💟풀이

SELECT CONCAT('/home/grep/src/'
               ,f.board_id
               ,'/'
               ,file_id,file_name
               ,file_ext
             ) AS 'FILE_PATH'
             #첨부파일 경로 /home/grep/src/board_id/file_id,file_name,file_ext
             -- 위와 같은 경로를 만들어주려면 문자열을 합해주어야 함.
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
              )
              #조회수가 가장 높은 게시글의 모든 정보를 보려면 :
              --메인 쿼리의 조회수가 서브쿼리의 MAX(조휘수)와 같으면 된다.
ORDER BY file_id DESC

〰️풀이해석〰️
1. 조회수가 가장 높은 게시물을 조회하자
'가장 높은'값을 뽑는것은 최댓갓함수 MAX를 사용하면 편하다
단, 이 경우 MAX값이 있는 컬럼에서만 최댓값을 뽑아주기 때문에,
조건을 충족하는 전체 행을 보기 위해서는 서브 쿼리로 빼주는 것이 바람직하다.
메인쿼리의 컬럼의 값이 서브쿼리의 max값과 일치하는 컬럼들만 가져온다는 뜻.

2.파일경로 출력하기
기본 경로에 대한 고정적인 문자열과 값에 따라 바뀌는 문자열에 대한 구분이 필요하다.

  • 기본 경로 : /home/grep/src/ , 단위 구분은 '/'로 구분됨
  • 유동 경로 : board_id(게시글ID), file_id(파일 ID), file_name(파일이름), file_ext(파일 확장자)

이 값을 통틀어 하나의 문자열로 만들어주어야 하기 때문에, CONCAT()함수를 사용하면 된다.
단, 게시글ID은 디렉토리로 구분되기 때문에, 반드시 뒤에 '/'로 구분자가 들어가야 한다.
(예시를 보면 더 확실하게 알 수 있다)

➰사용한 기능
1. MAX()
최댓값을 출력해주는 함수. 모든 형식에 적용가능 (문자는 알파벳 순으로 마지막)
SELECT에만 사용이 가능하다.
2. CONCAT()
문자열을 합쳐 하나의 문자열로 만들어주는 함수.
각 문자열은 쉼표(,)로 구분한다.
고정적인 문자열은 ''에, 컬럼값에 따라 달라지는 문자열은 컬럼명을 넣어주면 된다.
마지막에 별칭을 지정해주는 것이 좋다 (안그러면 컬럼명이 너무 길어진다)

profile
데이터분석 공부하는 비전공자

0개의 댓글