다음 테이블을 이용하여 지역별 완료 주문 금액 합계를 조회하는 SQL을 작성하시오.
CUSTOMER(customer_id, region)
ORDERS(order_id, customer_id, amount, status)
조건
1status가 'PAID'인 주문만 합산한다.
2합계가 1,000,000 이상인 지역만 출력한다.
3출력 열은 region, total_amount이다.
4total_amount 내림차순, 합계가 같으면 region 오름차순으로 정렬한다.
모범답안
SELECT c.region, SUM(o.amount) AS total_amount FROM CUSTOMER c JOIN ORDERS o ON o.customer_id = c.customer_id WHERE o.status = 'PAID' GROUP BY c.region HAVING SUM(o.amount) >= 1000000 ORDER BY total_amount DESC, c.region ASC;
풀이와 판단 근거
주문 상태는 개별 행의 조건이므로 집계 전에 WHERE에서 PAID만 선택한다. 지역별 합계는 CUSTOMER의 region을 기준으로 그룹화하고 SUM으로 계산한다.
집계 결과에 대한 조건은 WHERE가 아니라 HAVING에서 검사해야 한다. 마지막으로 합계를 내림차순 정렬하고 같은 합계의 출력 순서를 확정하기 위해 region을 두 번째 정렬 기준으로 둔다.
자동 채점은 검수된 대표 구문만 확정하고, 문법이 다른 동치 SQL은 직접 확인 대상으로 보낸다.
자주 틀리는 지점
- SUM 조건을 WHERE에 작성
- PAID 필터를 누락
- amount가 1,000,000 이상인 개별 행만 필터링
- 두 번째 정렬 기준을 누락
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.