[프로그래머스/ORACLE] 조건에 맞는 사용자와 총 거래금액 조회하기

2023. 10. 18. 21:46SQL/ORACLE

내 코드

SELECT A.USER_ID, A.NICKNAME, SUM(B.PRICE)
FROM USED_GOODS_USER A
INNER JOIN USED_GOODS_BOARD B ON A.USER_ID = B.WRITER_ID
WHERE B.STATUS = 'DONE'
GROUP BY A.USER_ID, A.NICKNAME
HAVING SUM(B.PRICE) >= 700000 
ORDER BY SUM(B.PRICE)

느낀점

GROUP BY 를 사용하는 문제였다. GROUP BY 를 잘 사용해보지 않았기때문에 어려운점이 많았다.

나느 GROUP BY 와 WHERE를 같이 쓰면 안되는건줄... 잘못알고있었다. 뿐만 아니라 GROUP BY 뒤에는 집계함수가 쓰인 칼럼은 추가하지 않는 다는것도, GROUP BY를 통해 나온 데이터를 합산한 집계함수 칼럼은 HAVING에서 다뤄야한다는것도 미숙하게도 모르고있었다.

이번기회에 좀 잡고 넘어간듯 하다.

 

GROUP BY를 사용하기 이전에 알아두면 좋을 것이 있다.

SQL 실행순서이다.

FROM -> CONNECT BY -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

이것이 왜 중요하냐면 SELECT 문에서 별칭을 사용할 경우,  FROM이나 WHERE나 GROUP BY에서 그 별칭을 사용하지 못하기 때문이다. 이것때문에도 에러가 발생하였다. 잘 알아두고 넘어가면 좋을 듯 하다.