[MySQL] Group By

이영주·2021년 3월 28일
0

MySQL

목록 보기
8/11

Group By를 집계 함수와 쓰면 다양한 방식으로 데이터를 분석할 수 있게 된다.
그루핑은 로우들을 여러개의 그룹으로 나누어 보여준다.
gender 테이블의 고유한 값만 출력되는 distinct 함수와 똑같은 결과인 M, F 로만 출력이 되지만 다른점은 하나의 로우인 F 안에는 gender 컬럼의 값이 f인 모든 로우들이 들어가있는 상태가 되는 것이다.

SELECT gender FROM member GROUP BY gender;

그루핑을 하고 나서 count 를 사용하면 다음과 같이 각각의 그룹에 대한 row수가 출력이 되는 것이다.

SELECT gender, COUNT(*) FROM member GROUP BY gender;

여러개의 기준을 그루핑 하는것도 가능하다.

SELECT
	SUBSTRING(address, 1, 2) as region,
	gender,
	COUNT(*)
FROM member
GROUP BY
	SUBSTRING(address, 1, 2)
	gender;
  • having

여러 그룹 중에서 보고 싶은 그룹들만 선별할 수 있도록 해준다.

SELECT
	SUBSTRING(address, 1, 2) as region,
	gender,
	COUNT(*)
FROM member
GROUP BY
	SUBSTRING(address, 1, 2)
	gender;
HAVING region = '서울'
	AND gender = 'm';
  • select 문과 group by

group by를 사용할 때는 select 절에 group by를 쓰지 않은 컬럼 이름을 사용할 수 없다.
왜냐하면 그루핑 기준으로 사용하지 않은 컬럼들을 조회하려고 하면 어떤 칼럼을 조회해야 하는지 sql문이 알수 없기 때문이다. 다만 count, max 등과 같은 모든 로우에 대한 값을 계산하는 집계 함수는 사용할 수 있다.

0개의 댓글