Rev Notebook

[프로그래머스] SQL Lv.3 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

by Rev_

예전에는 진짜 SQL 전혀 할 줄 몰랐었는데

전공 데이터베이스 수업도 진짜 야매로 배워서 말이죠 ... 🥲

이젠 2단계는 너무 쉬워서 3단계를 풀어야겠다 ...

 

간단한 JOIN을 활용하는 문제였다 !

-- 조회수가 가장 높은 중고거래 게시물의 첨부파일 경로 조회
-- 파일 경로는 'home/grep/src/게시글ID/파일ID파일이름.파일확장자' 형식으로 구성
SELECT '/home/grep/src/' || T2.BOARD_ID || '/' || T1.FILE_ID || T1.FILE_NAME || T1.FILE_EXT AS FILE_PATH
FROM USED_GOODS_FILE T1
LEFT OUTER JOIN USED_GOODS_BOARD T2
ON T1.BOARD_ID = T2.BOARD_ID
WHERE T2.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
ORDER BY T1.FILE_ID DESC

JOIN 조건은 공통 컬럼인 BOARD_ID로 연결해주고, WHERE절에 VIEWS 컬럼의 MAX값을 사용하도록 하였다.

그리고 SELECT절에서 각 컬럼 값들을 결합해서 보여줘야 했는데, 나는 || 을 사용했다.

(오라클에서는 ||이 되는데, MySQL에서는 CONCAT 함수만 사용할 수 있다고 한다.)

-> ANSI SQL을 작성하기 위해서는 CONCAT 함수를 사용하는 것이 좋을 것 같다.

 

항상 집계함수를 조건에 넣을려고 하면 어떻게 쿼리를 작성해야할지 고민이 되는 것 같다.

위처럼 WHERE절에 조건을 넣을지, 아니면 처음부터 JOIN을 할 때 서브쿼리를 사용할지와 같은 ..

 

 

 

 

 

 

블로그의 정보

Hi Rev

Rev_

활동하기