데이터베이스

데이터베이스 정리 11 - 그루핑

열곰탱 2021. 8. 23. 18:59

그루핑(grouping) : 로우들을 여러 개 그룹으로 나눈다는 의미 

 

gender 칼럼을 기준으로 같은 값을 갖는 로우들은 같은 그룹에 속하게 된다.

 

그런데 gender의 결과를 보면 DISTINCT의 실행결과와 같다.

하지만 외부적으로는 같아 보이지만 내부적으로는 정말 다르다.

gender의 m 안에는 gender 컬럼의 값이 m인 모든 row들이 들어 있고, f 안에는 값이 f인 row가 들어가 있다. 각각의 row는 하나의 그룹을 나타내고 있는 것이다.

 

 

COUNT - 조회되는 row의 개수를 구해주는 표현식

즉 위 구문에서는 전체 테이블에 대해서 실행되는 것이 아니라 f와 m에 대해 각각 조회되고 있는 것이다.

 

다른 예)

SUBSTRING은 문자열 함수로 문자열에서 원하는 부분만 뽑아내는 함수이다.

지금 위 구문에서 address 로우에서 첫 번째로 시작하고 두 번째 글자까지 뽑아냅니다.

 

 

2개의 그루핑 기준)

빨간 줄을 보면 같은 서울이라도 성별이 m인 회원은 4명, f인 회원은 1명이라는 것을 확인할 수 있다.

 

 

HAVING - 원하는 그룹만 선별하고 싶은 경우

WHERE와 HAVING은 그 의미가 비슷해 보이지만 다른 목적을 가진 구문이다.

WHERE은 테이블에서 맨 처음 로우들을 조회할 때 조건을 설정하기 위한 구문이다.

HAVING은 이미 조회된 로우들을 다시 그룹핑했을 때 생성된 그룹들 중에서 다시 필터링을 할 때 쓰는 구문이다.

잘 구별해서 사용해야 한다!!

 

주의할 점

1. GROUP BY 절 뒤에 쓴 칼럼 이름들만, SELECT 절 뒤에 사용 할 수 있다.

2. 대신 SELECT 절 뒤에서 집계 함수 이외의 컬럼 이름을 인자로 넣는 것은 허용된다.