GROUP BY
GROUP BY[컬럼 이름] 형식으로 사용
주로 그룹별 데이터를 집계할 때 사용하며, 엑셀 피벗 기능과 유사
GROUP BY가 쓰인 쿼리의 SELECT 절에는 GROUP BY 대상 컬럼과 그룹함수만 사용가능
여러 컬럼으로 그룹화도 가능 → 키워드 뒤에 [컬럼이름]을 복수개 입력하면 됨
컬럼 번호로도 그룹화 가능
- 이때, 컬럼번호는 SELECT절의 컬럼 이름 순서를 의미함
--ver1.
SELECT type
FROM BigQuery.mypokemon
GROUP BY type;
--ver2.
-- AVG: 그룹함수 - 사용가능
SELECT type, AVG(attack)
FROM BigQuery.mypokemon
GROUP BY type;
HAVING
: 가져올 데이터 그룹에 조건을 지정해주는 키워드WHERE
절은 그룹화 되기 전의 개별 행에 조건을 적용합니다.WHERE
절을 사용합니다.HAVING
절은 그룹화 된 후의 데이터 집합에 조건을 적용합니다.GROUP BY
절과 함께 사용되며, 그룹화된 결과에 대해 특정 조건을 충족하는 그룹만을 선택하는 데 사용됩니다.HAVING
절을 사용합니다.간단히 말해, WHERE
절은 데이터를 그룹화하기 전에 행 수준에서 필터링하는 반면, HAVING
절은 그룹화한 후 그룹 수준에서 필터링합니다.
-- 쿼리문법
SELECT [컬럼 이름],.., [그룹 함수]
FROM [테이블 이름]
WHERE 조건식
GROUP BY [컬럼 이름]
HAVING 조건식;
COUNT
: 그룹의 값을 세는 함수
SUM
: 그룹의 합을 계산하는 함수
AVG
: 그룹의 평균을 계산하는 함수
MIN
: 그룹의 최솟값을 반환하는 함수
MAX
: 그룹의 최댓값을 반환하는 함수
예제
SELECT 절에 사용
SELECT type, COUNT(*), COUNT(1), AVG(attack), MAX(attack)
FROM BigQuery.mypokemon
GROUP BY type;
COUNT(*)
는 테이블의 모든 열을 고려, COUNT(1)
은 단순히 행 수만을 계산HAVING 절에 사용
SELECT type, COUNT(1), AVG(attack), MAX(attack)
FROM BigQuery.mypokemon
GROUP BY type
HAVING COUNT(1)=2;
키워드 | 문법 | 작성순서 | 실행순서 |
---|---|---|---|
SELECT | SELECT [컬럼이름] | 1 | 5 |
FROM | FROM [테이블이름] | 2 | 1 |
WHERE | WHERE [조건식] | 3 | 2 |
GROUP BY | GROUP BY [컬럼이름] | 4 | 3 |
HAVING | HAVING [조건식] | 5 | 4 |
ORDER BY | ORDER BY [컬럼이름] | 6 | 6 |