[프로그래머스/ORACLE] 조건에 맞는 사용자와 총 거래금액 조회하기
2023. 10. 18. 21:46ㆍSQL/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에서 그 별칭을 사용하지 못하기 때문이다. 이것때문에도 에러가 발생하였다. 잘 알아두고 넘어가면 좋을 듯 하다.
'SQL > ORACLE' 카테고리의 다른 글
[프로그래머스/ORACLE] 동명 동물 수 찾기(GROUP BY 로 묶은 데이터의 각 개수 구하기) (1) | 2023.10.22 |
---|---|
[프로그래머스 / ORACLE] 상위 n개 레코드 (날짜의 MIN, MAX 값 구하기) (1) | 2023.10.22 |
[프로그래머스 / ORACLE] 오랜 기간 보호한 동물(1) (1) | 2023.10.19 |
[프로그래머스/ORACLE] 12세 이하인 여자 환자 목록 출력하기 (1) | 2023.10.19 |
[프로그래머스/ORACLE] 중복제거하기 (0) | 2023.10.18 |