[ 6-1. 데이터 그룹화 하기(GROUP BY) ]
○ GROUP BY 정의
· 컬럼에서 동일한 값을 가지는 로우를 그룹화하는 키워드
○ 특징
· GROUP BY [컬럼 이름] 형식으로 사용
· 주로 그룹 별 데이터를 집계할 때 사용하며, 엑셀의 피벗 기능과 유사
· GROUP BY가 쓰인 쿼리의 SELECT절에는 GROUP BY 대상 컬럼과 그룹 함수만 사용 가능
· 만약, GROUP BY 대상 컬럼이 아닌 컬럼을 SELECT 하면, 에러가 발생
· 여러 컬럼으로 그룹화도 가능하며, 키워드 뒤에 [컬럼 이름]을 복수 개 입력하면 됨.
· 컬럼 번호로도 그룹화가 가능
· 이 때, 컬럼 번호는 SELECT 절의 컬럼 이름의 순서를 의미
/* GROUP BY 활용 예제 */
SELECT [GROUP BY 대상 컬럼 이름], ···, [그룹 함수]
FROM [테이블 이름]
WHERE 조건식
GROUP BY [컬럼 이름];
ex) SELECT type
FROM pokemon.mypokemon
GROUP BY type;
※ Group BY 대상 컬럼과 그룹 함수만 사용 가능
[ 6-2. 그룹에 조건 주기 (HAVING) ]
○ HAVING 정의
· 가져올 데이터 그룹에 조건을 지정해주는 키워드
○ 특징
· HAVING 조건식 형식으로 사용
· 조건식이 True(참)이 되는 그룹만 선택
· HAVING 절의 조건식에서는 그룹함수를 활용
/* HAVING 활용 예제 */
SELECT [컬럼 이름], ···, [그룹 함수]
FROM [테이블 이름]
WHERE 조건식
GROUP BY [컬럼 이름]
HAVING 조건식;
ex) SELECT type
FROM pokemon.mypokemon
GROUP BY type
HAVING number > 10;
[ 6-3. 다양한 그룹함수 알아보기(COUNT, SUM, AVG, MIN, MAX) ]
○ COUNT
· 그룹의 값 수를 세는 함수
· COUNT((컬럼 이름)) 형식으로 SELECT, HAVING 절에서 사용
· 집계할 컬럼 이름은 그룹의 기준이 되는 컬럼 이름과 같아도 되고, 같지 않아도 됨
· COUNT(1)은 하나의 값을 1로 세어주는 표현으로 COUNT 함수에 자주 사용
· GROUP BY가 없는 쿼리에서도 사용 가능하며, 이때는 전체 로우에 함수가 적용
/* COUNT 활용 예제 */
SELECT [컬럼 이름], ···, COUNT [(컬럼 이름)]
FROM [테이블 이름]
GROUP BY [컬럼 이름]
HAVING 조건문;
ex) SELECT type, count(*), count(1)
FROM pokemon.mypokemon
GROUP BY type;
○ SUM
· 그룹의 합을 계산하는 함수
· SUM([컬럼 이름]) 형식으로 SELECT, HAVING 절에서 사용
· 집계할 컬럼 이름은 그룹의 기준이 되는 컬럼 이름과 같아도 되고, 같지 않아도 됨
· GROUP BY가 없는 쿼리에서도 사용 가능하며, 이때는 전체 로우에 함수가 적용됨
/* SUM 활용 예제 */
SELECT [컬럼 이름], ···, SUM [(컬럼 이름)]
FROM [테이블 이름]
GROUP BY [컬럼 이름]
HAVING 조건문;
ex) SELECT type, sum(number)
FROM pokemon.mypokemon
GROUP BY type;
○ AVG
· 그룹의 평균을 계산하는 함수
· AVG([컬럼 이름]) 형식으로 SELECT, HAVING 절에서 사용
· 집계할 컬럼 이름은 그룹의 기준이 되는 컬럼 이름과 같아도 되고, 같지 않아도 됨
· GROUP BY가 없는 쿼리에서도 사용 가능하며, 이때는 전체 로우에 함수가 적용됨
/* AVG 활용 예제 */
SELECT [컬럼 이름], ···, AVG [(컬럼 이름)]
FROM [테이블 이름]
GROUP BY [컬럼 이름]
HAVING 조건문;
ex) SELECT type, AVG(number)
FROM pokemon.mypokemon
GROUP BY type;
○ MIN
· 그룹의 최솟값을 반환하는 함수
· MIN([컬럼 이름]) 형식으로 SELECT, HAVING 절에서 사용
· 집계할 컬럼 이름은 그룹의 기준이 되는 컬럼 이름과 같아도 되고, 같지 않아도 됨
· GROUP BY가 없는 쿼리에서도 사용 가능하며, 이때는 전체 로우에 함수가 적용됨
/* MIN 활용 예제 */
SELECT [컬럼 이름], ···, MIN [(컬럼 이름)]
FROM [테이블 이름]
GROUP BY [컬럼 이름]
HAVING 조건문;
ex) SELECT type, MIN(number)
FROM pokemon.mypokemon
GROUP BY type;
○ MAX
· 그룹의 최댓값을 계산하는 함수
· MAX([컬럼 이름]) 형식으로 SELECT, HAVING 절에서 사용
· 집계할 컬럼 이름은 그룹의 기준이 되는 컬럼 이름과 같아도 되고, 같지 않아도 됨
· GROUP BY가 없는 쿼리에서도 사용 가능하며, 이때는 전체 로우에 함수가 적용됨
/* MAX 활용 예제 */
SELECT [컬럼 이름], ···, MAX [(컬럼 이름)]
FROM [테이블 이름]
GROUP BY [컬럼 이름]
HAVING 조건문;
ex) SELECT type, MAX(number)
FROM pokemon.mypokemon
GROUP BY type;
[ 6-4. 쿼리 실행 순서 알아보기 ]
'📒 교육 및 공부 > [교육] SQL 데이터분석 첫걸음' 카테고리의 다른 글
[SQL 데이터분석 첫걸음] Day08. 테이블 합치기 (0) | 2023.12.17 |
---|---|
[SQL 데이터분석 첫걸음] Day07. 규칙 만들기 (0) | 2023.12.17 |
[SQL 데이터분석 첫걸음] Day05. 원하는 데이터 만들기 (0) | 2023.12.04 |
[SQL 데이터분석 첫걸음] Day04. 조건에 맞는 데이터 가져오기 (1) | 2023.11.25 |
[SQL 데이터분석 첫걸음] Day03. 데이터 가져오기 (1) | 2023.11.21 |