얘도 서브쿼리,조인 문제.근데 앞 문제들이랑 다른 점은 주어지는 테이블이 두 개라는 점?
USED_GOODS_BOARD
는 중고거래 상품들 정보가 있는 테이블이고 USED_GOODS_USER
는 회원들의 정보가 있는 테이블이다.
둘을 JOIN 해야겠다! 먼저 생각이 든다.
조건을 더 보면 1)완료된 중고거래
2)총금액이 70만원 이상
인 사람의 3)회원ID, 닉네임, 총거래금액을 구해
야 하므로,
👆 USED_GOODS_BOARD 테이블에서 회원ID로 그룹핑을 하고, 집계함수 SUM을 이용하여 70만원 이상인 것들을 구한 뒤,
🤘 STATUS가 DONE인지를 확인한 서브쿼리를 작성하면 된다.
🤟 최종으로 조회해야 하는 정보는 회원ID,닉네임,총거래금액이므로 USED_GOODS_USER와 위 서브쿼리를 JOIN 하여, USER_ID가 같은 행을 조회하고 총거래금액을 기준으로 오름차순 정렬하면 끝.
🙆♀️ 정답 코드
SELECT A.USER_ID,A.NICKNAME, B.TOTAL_SALES FROM USED_GOODS_USER A JOIN ( SELECT SUM(PRICE) AS TOTAL_SALES, WRITER_ID FROM USED_GOODS_BOARD WHERE STATUS="DONE" GROUP BY WRITER_ID HAVING SUM(PRICE)>=700000) B ON A.USER_ID=B.WRITER_ID ORDER BY B.TOTAL_SALES;
참고해보니 서브쿼리 안쓰고 INNER JOIN으로도 가능한 것 같다.(더 간단하긴 한 듯...)
🤔서브쿼리 X
SELECT USER_ID , NICKNAME , SUM(PRICE) AS TOTAL_SALES FROM USED_GOODS_BOARD board INNER JOIN USED_GOODS_USER user on board.WRITER_ID = user.USER_ID AND STATUS = 'DONE' GROUP BY USER_ID HAVING SUM(PRICE) >= 700000 ORDER BY TOTAL_SALES