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

SlowAnd·2024년 2월 19일

[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 BY U.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 없이는 이러한 조건을 적용할 수 없으며, 전체 결과 집합에 대해 하나의 합계만 계산될 것입니다.

0개의 댓글