코딩테스트

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

히그다스 2023. 12. 4. 16:47

 

 

JOIN이 어색했을 시절

 

풀다가 포기한 문제

 

 

 

우선 이렇게 풀었다

WHERE절에서 오류가 나서 서브쿼리로 처리함

근데 너무 비효율적인거 같아서

뤼튼에게 물어보고 다른 방법을 찾았다

 

 

SELECT WRITER_ID, NICKNAME, TOTAL_SALES
FROM
(SELECT USED_GOODS_BOARD.WRITER_ID, USED_GOODS_USER.NICKNAME, sum(USED_GOODS_BOARD.PRICE) as "TOTAL_SALES"
FROM USED_GOODS_BOARD JOIN USED_GOODS_USER ON USED_GOODS_BOARD.WRITER_ID = USED_GOODS_USER.USER_ID
WHERE USED_GOODS_BOARD.STATUS = "DONE"
GROUP BY WRITER_ID) A
WHERE TOTAL_SALES >= 700000
ORDER BY TOTAL_SALES ASC;

 

 

그것은 바로 HAVING절을 사용하는 것

HAVING은 잘 사용해보지 않아서 어색했다

 

WHERE절에서는 연산자가 적용이 안되기 때문에

그럴때 HAVING을 쓰면 된다고 뤼튼이 알려줬다

 

순서는 GROUP BY 뒤에!

 

SELECT USED_GOODS_BOARD.WRITER_ID, USED_GOODS_USER.NICKNAME, sum(USED_GOODS_BOARD.PRICE) as "TOTAL_SALES"
FROM USED_GOODS_BOARD JOIN USED_GOODS_USER ON USED_GOODS_BOARD.WRITER_ID = USED_GOODS_USER.USER_ID
WHERE USED_GOODS_BOARD.STATUS = "DONE" 
GROUP BY WRITER_ID
HAVING sum(USED_GOODS_BOARD.PRICE) >= 700000
ORDER BY TOTAL_SALES ASC;

 

 

오늘도 한발짝 나아갔구만

 

 


출처 : 프로그래머스