GROUP BY
특징
- 여러 컬럼으로 그룹 화도 가능하며, 키워드 뒤에 컬럼 이름을 복수 개 입력하면 됩니다.
- 컬럼 번호로도 그룹화가 가능합니다.
- 이때 컬럼 번호는
SELECT
절의 컬럼 이름의 순서를 의미합니다.
- 이때 컬럼 번호는
사용 예제
! 400
결과
SELECT type
FROM pokemon.mypokemon
GROUP BY type;
! 200
내부 구조
! 600
HAVING
특징
- HAVING 조건식 형식으로 사용합니다.
- 조건식이 True가 되는 그룹만 선택합니다.
- HAVING 절의 조건식에서는 그룹 함수를 활용합니다.
SELECT [컬럼 이름], ... , [그룹함수],
FROM [테이블 이름]
WHERE 조건식
GROUP BY [컬럼이름]
HAVING 조건식;
GROUP 함수
COUNT
COUNT?
- 그룹의 값 수를 세는 함수
- 집계할 컬럼 이름은 그룹의 기준이 되는 컬럼 이름과 같아도 되고, 같지 않아도 된다.
COUNT(1)
은 하나의 값을 1로 세어주는 표현으로 COUNT 함수에 자주 사용됩니다.
- GROUP BY가 없는 쿼리에서도 사용 가능, 이때는 전체 로우에 함수가 적용됩니다.
문법
SELECT [컬림 이름], ..., COUNT([컬럼이름])
FROM [테이블 이름]
GROUP BY [컬럼 이름]
HAVING 조건문;
AVG
AVG?
- 그룹의 평균을 계산하는 함수
AVG([컬럼이름])
형식으로 SELECT, HAVING 절에서 사용합니다.- 집계할 컬럼 이름은 그룹의 기준이 되는 컬럼 이름과 같아도 되고, 같지 않아도 됩니다.
- GROUP BY가 없는 쿼리에서도 사용 가능하며, 이때는 전체 로우에 함수가 적용됩니다.
문법
SELECT [컬럼 이름], ... , AVG([그룹함수])
FROM [테이블 이름]
WHERE 조건식
GROUP BY [컬럼이름]
HAVING 조건식;
MIN
MIN?
- 그룹의 최솟값을 반환하는 함수
MIN([컬럼이름])
형식으로SELECT
,HAVING
절에서 사용합니다.- 집계할 컬럼 이름은 그룹의 기준이 되는 컬럼 이름과 같아도 되고, 같지 않아도 됩니다.
GROUP BY
가 없는 쿼리에서도 사용 가능하며, 이때는 전체 로우에 함수가 적용 됩니다.
문법
SELECT [컬럼이름], ..., MIN([컬럼 이름])
FROM [테이블 이름]
GROUP BY [컬럼 이름]
HAVING 조건문
Group 함수 사용 예제
DB
! 600
쿼리1
SELECT type, COUNT(*), COUNT(1), AVG(height), MAX(weight)]
FROM pokemon.myhpokemon
GROUP BY type;
결과
! 400
쿼리2
SELECT type, COUNT(*), COUNT(1), AVG(height), MAX(weight)]
FROM pokemon.myhpokemon
GROUP BY type
HAVING COUNT(1)=2;
결과
! 400