조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
첨부파일 경로 조회(CONCAT('/home/grep/src/',B.BOARD_ID,'/',F.FILE_ID,F.FILE_NAME,F.FILE_EXT) AS FILE_PATH)
조건: 조회수가 가장 높음
처음 작성한 코드(오답)
SELECT
CONCAT('/home/grep/src/',B.BOARD_ID,'/',F.FILE_ID,F.FILE_NAME,F.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_FILE F
ON B.BOARD_ID = F.BOARD_ID
HAVING MAX(B.VIEWS)
왜 틀렸을까? => 결괏값이 1개만 나왔는데, 예시 답은 2개
조회수가 가장 높은 게시물에 파일이 2개 있었기 때문.
그럼 단순히 HAVING만으로는 무리가 있어 보임
어떻게 해결할까?
WHERE절 자체에는 MAX와 같은 조건을 넣을 수 없음
그렇다면 서브쿼리를 이용하자.
수정 코드(정답)
SELECT
CONCAT('/home/grep/src/',B.BOARD_ID,'/',F.FILE_ID,F.FILE_NAME,F.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_FILE F
ON B.BOARD_ID = F.BOARD_ID
WHERE B.VIEWS = (SELECT
MAX(VIEWS)
FROM USED_GOODS_BOARD)
ORDER BY F.FILE_ID DESC;
1.JULY 테이블 서브쿼리
SELECT FLAVOR, SUM(TOTAL_ORDER) AS JULY_SUM
FROM JULY
GROUP BY FLAVOR
| FLAVOR | JULY_SUM |
|---|---|
| Vanilla | 200 |
| Strawberry | 150 |
FIRST_HALF 테이블과 LEFT JOINFROM FIRST_HALF F
LEFT JOIN (1) ON F.FLAVOR = J.FLAVOR
ORDER BY로 주문량 총합 기준 정렬ORDER BY (F.TOTAL_ORDER + COALESCE(J.JULY_SUM, 0)) DESC
LIMIT 3F-Lab : 상위 1% 개발자들의 멘토링 개발 블로그는 어떻게 써야할까?
draw.io 같은 사이트 이용