[SQL 고득점 Kit / GROUP BY ] Level 3 - 조건에 맞는 사용자와 총 거래금액 조회하기

SELECT U.USER_ID, U.NICKNAME, SUM(B.PRICE) AS TOTAL_SALES
FROM USED_GOODS_USER U
JOIN USED_GOODS_BOARD B ON U.USER_ID = B.WRITER_ID
WHERE B.STATUS = 'DONE'
GROUP BY U.USER_ID
HAVING SUM(B.PRICE) >= 700000
ORDER BY TOTAL_SALES;
GROUP BY절을 사용하는 주된 이유는
집계 함수(SUM, COUNT, MAX, MIN, AVG 등)를 적용하기 위해 특정 열(또는 열들의 조합)에 따라 데이터를 그룹화하려는 경우입니다. 집계 함수는 그룹화된 각 그룹에 대해 단일 결과 값을 반환합니다.
GROUP BYU.USER_ID사용 이유:
- 유일한 식별자:
USER_ID는USED_GOODS_USER테이블에서 각 사용자를 유일하게 식별하는 키입니다. 사용자별로 거래된 상품의 총합을 계산하기 위해, 같은USER_ID를 가진 데이터를 하나의 그룹으로 묶어서 처리해야 합니다.- 집계 목적: 쿼리의 목적은 각 사용자별로 완료된(
STATUS = 'DONE') 거래의 총금액(SUM(B.PRICE))을 계산하는 것입니다. 이를 위해, 사용자별(USER_ID별)로 데이터를 그룹화하고, 그룹별 총금액을 집계합니다.HAVING절과의 상호작용:GROUP BY로 그룹화된 후,HAVING SUM(B.PRICE) >= 700000조건을 사용하여 총거래금액이 70만 원 이상인 그룹만을 필터링합니다.GROUP BY없이는 이러한 조건을 적용할 수 없으며, 전체 결과 집합에 대해 하나의 합계만 계산될 것입니다.