
SQL 공부중 입니다. ✍✍✍
문제
https://school.programmers.co.kr/learn/courses/30/lessons/164668
풀이
SELECT UGU.USER_ID, UGU.NICKNAME, SUM(PRICE) "TOTAL_SALES"
FROM USED_GOODS_BOARD UGB
INNER JOIN USED_GOODS_USER UGU
ON UGB.WRITER_ID = UGU.USER_ID
WHERE UGB.STATUS = 'DONE'
GROUP BY UGB.WRITER_ID
HAVING SUM(PRICE) >= 700000
ORDER BY SUM(PRICE) ASC;
두 테이블을 JOIN하여 사용자의 총 판매량을 출력하는 문제였습니다. JOIN 해야되는 WRITER_ID, USER_ID 두 컬럼명이 달라서 조금 당황했지만 문맥상 적절한 외래키 파악하여 JOIN 시켰습니다. 🤸🤸🤸
또 문제에서 지칭하는 중고 거래 게시판 첨부파일 정보 테이블의 이름 (USED_GOODS_FILE)이 문제 하단에서는 USED_GOODS_USER으로 언급하는 문제 오류가 있어 'USED_GOODS_FILE' doesn't exists 오류가 뜨기도 하였습니다. 💢💢💢
저의 풀이 이외에 LEFT JOIN을 활용한 풀이도 볼 수 있었습니다.
-- 게시판 정보 USER_GOODS_BOARD
-- 유저 정보 USED_GOODS_USER
SELECT B.USER_ID, B.NICKNAME, SUM(A.PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD A
LEFT JOIN USED_GOODS_USER B ON (A.WRITER_ID = B.USER_ID)
WHERE STATUS = 'DONE'
GROUP BY B.USER_ID
HAVING TOTAL_SALES >= 700000
ORDER BY TOTAL_SALES;
감사합니다.🦌🦌🦌