[강의명]
패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반
[수강목록]
24. 조인과 집계 데이터 - 08. Group By절
25. 조인과 집계 데이터 - 09. Having절
[강의내용]
24. 조인과 집계 데이터 - 08. Group By절
GROUP BY절은 SELELCT문에서 반환된 행을 그룹으로 나눈다. 각 그룹에 대한 합계, 평균, 카운트 등과 같은 집계함수 계산을 할 수 있다.
SUM과 같은 집계(Aggregation)함수를 사용할때는 반드시 GROUP BY를 사용해야 한다.
[문법]
SELECT COLUMN_1, 집계함수(COLUMN_2)
FROM TABLE_NAME
GROUP BY COLUMN_1;
GROUP BY 절은 FROM 또는 WHERE절 바로 뒤에 나타나야 함
[실습1]
SELECT CUSTOMER_ID
FROM PAYMENT
GROUP BY CUSTOMER_ID;
customer_id를 기준으로 GROUP BY를 실행했기 때문에 DISTINCT와 동일한 결과를 가져온다.
[실습2]
거래액이 가장 많은 고객 순으로 출력해본다.
SELECT CUSTOMER_ID,
SUM(AMOUNT) AS AMOUNT
FROM PAYMENT
GROUP BY CUSTOMER_ID
ORDER BY amount DESC ;
[실습3]
staff별로 얼마나 많은 payment건을 처리했는지 조회해본다.
SELECT staff_id, count(payment_id) AS count
FROM payment
GROUP BY staff_id;
25. 조인과 집계 데이터 - 09. Having절
GROUP BY절과 함께 HAVING절을 사용하여 GROUP BY의 결과를 특정 조건으로 필터링하는 기능을 한다.
WHERE절과 비슷하나, WHERE절의 다음 순서로 필터링을 진행한다.
[문법]
SELECT COLUMN_1, 집계함수(COLUMN_2)
FROM TABLE_NAME
GROUP BY COLUMN_1
HAVING 조건식;
[실습1]
200 이상 구매한 고객들의 정보를 조회해본다.
SELECT A.CUSTOMER_ID,
B.EMAIL,
SUM(A.AMOUNT) AS AMOUNT_SUM
FROM PAYMENT A,
CUSTOMER B
WHERE A.CUSTOMER_ID = B.CUSTOMER_ID
GROUP BY A.CUSTOMER_ID,B.EMAIL
HAVING SUM(A.AMOUNT) > 200;
[실습2]
스토어별 고객 수를 조회해본다.
SELECT STORE_ID,
COUNT(CUSTOMER_ID) AS COUNT
FROM CUSTOMER
GROUP BY STORE_ID;