반응형
데이터의 그룹화
GROUB BY
1. 열 이름으로 그룹화
집계 함수를 제외한 SELECT문의 모든 열은 GROUB BY절에 있어야함
SELECT 그룹화할 열 이름1, 그룹화할 열 이름2, 집계 함수
FROM 테이블명
WHERE 조건절
GROUB BY 열 이름1, 열 이름2;
2. 열 위치로 그룹화
SELECT 그룹화할 열 이름1, 그룹화할 열 이름2, 집계 함수
FROM 테이블명
WHERE 조건절
GROUB BY 1, 2;
1. PPC_201312 테이블을 사용하여 고객등급별 인당 평균 연 수익을 계산하려면?
SELECT SEG, ANNL_REV
FROM PPC_201312
GROUP BY SEG;
2. PPC_201312 테이블을 사용하여 카드상품과 대출상품 보유 간의 관계를 알아보려면?
SELECT CARD_FLG, LOAN_FLG, CNT
FROM PPC_201312
GROUP BY CARD_FLG, LOAN_FLG;
1. 원하는 열을 GROUP BY절에 포함할 수 있다
=> GROUP BY절에 포함되는 열이 한 개씩 증가할수록 차원이 한 개씩 증가하고 좀 더 세부적으로 데이터를 분석할 수 있음
2. GROUP BY절은 WHERE 조건절 뒤에 위치하고, ORDER BY절 앞에 위치한다
3. 그룹화된 열에 NULL값을 포함할 경우 NULL값도 그룹화 된다
=> NULL값을 여러 개 포함하고 있을 경우 하나의 NULL값으로 그룹화됨
그룹화된 데이터의 필터링
1. 그룹화 데이터 필터링하기
HAVING은 WHERE 조건절과 마찬가지로 조건을 주는 역할을 한다
=> 차이는 HAVING은 그룹화된 변수에 대해 조건을 줌
SELECT 그룹화할 열 이름1, 집계 함수
FROM 테이블명
WHERE 조건절
GROUP BY 열 이름1
HAVING 집계 함수 조건;
1. 구매횟수가 두 번 이상인 고객에게 마케팅을 하려고 할 때 마케팅 대상자는 누구인지 알아내려면?
SELECT CUST_NM, COUNT(*) AS CNT
FROM PROD_SALES
GROUP BY CUST_NM
HAVING COUNT(*) >= 2;
2. 구매금액의 평균이 7만원 이상인 고객에게 마케팅을 하려고 할 때 마케팅 대상자는 누구인지 알아내려면?
SELECT CUST_NM, AVG(SALES_AMT) AS SALES_AMT
FROM PROD_SALES
GROUB BY CUST_NM
HAVING AVG(SALES_AMT) >= 70000;
1. 그룹화 필터링 후 데이터를 정렬할 때 ORDER BY절을 사용할 수 있다
2. WHERE 조건절의 조건은 데이터가 그룹화되기 전에 필터링하고, HAVING절의 조건을 데이터가 그룹화된 후에 필터링한다
=> WHERE 조건절에 의해 제외된 행은 그룹화할 때도 제외되기 때문에 HAVING절의 고려 대상이 X
반응형
'Database > SQL' 카테고리의 다른 글
하위 쿼리 (2) | 2024.02.29 |
---|---|
테이블 합치기 (1) | 2024.02.29 |
SQL 함수 활용하기 (0) | 2024.02.26 |
SQL 기본 함수 배우기 (2) | 2024.02.26 |
텍스트 마이닝을 활용한 데이터 조건 주기 (1) | 2024.02.26 |