프로그래머스; 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

랜디 Randy·2024년 2월 6일
0

SQL 문제풀이

목록 보기
10/20

문제 링크

정답코드

-- ANSWER
SELECT CONCAT('/home/grep/src/',
              file.BOARD_ID, '/',
              file.FILE_ID,
              file.FILE_NAME,
              file.FILE_EXT)
AS FILE_PATH
FROM USED_GOODS_BOARD board
LEFT JOIN USED_GOODS_FILE file ON board.BOARD_ID = file.BOARD_ID
WHERE gb.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
ORDER BY gf.FILE_ID DESC;

우선 두 테이블을 BOARD_ID를 기준으로 join했습니다.
그리고 VIEW가 가장 높은 컬럼을 찾아야하는데,
HAVING절을 사용하려고 하니 GROUP BY를 어떻게 사용해야할지 잘 모르겠어서...

SELECT를 한번 더 사용해서 MAX()함수를 사용했습니다.

다듬기

다른 분들의 코드를 참고하여 코드를 조금 더 간단하게 다듬어봤습니다

SELECT CONCAT('/home/grep/src/',
              file.BOARD_ID, '/',
              FILE_ID,
              FILE_NAME,
              FILE_EXT)
AS FILE_PATH
FROM USED_GOODS_FILE file
LEFT JOIN USED_GOODS_BOARD board
ON board.BOARD_ID = file.BOARD_ID
WHERE board.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
ORDER BY FILE_ID DESC;

file과 board 라는 두 테이블 중 하나에만 존재하는 컬럼이라면 굳이 어떤 테이블의 어떤 컬럼인지 명시해줄 필요가 없군요?

다만 현업에서는 다른사람이 보기에 헷갈릴 수 있으니 적어주는게 좋을 것 같긴 합니다만,
정답을 추려내야 한다는 관점에서는 이렇게 적는 것도 좋아보입니다.

profile
데이터는 계단, 직관은 다리

0개의 댓글