c1 | c2 | c3 |
---|---|---|
a | ㄱ | 100 |
a | ㄴ | 200 |
a | ㄱ | 200 |
b | ㄴ | 100 |
b | ㄱ | 500 |
b | ㄴ | 300 |
이런데이터가 있다고 가정했을때
a그룹의 ㄱㄴ의 각각의 숫자
b그룹의 ㄱㄴ의 각각의 숫자를 알고싶다고 가정했을때의 쿼리문은
select c1,c2,count(*) from table
group by c1, c2
를 입력하면
c1 | c2 | count(*) |
---|---|---|
a | ㄱ | 2 |
a | ㄴ | 1 |
b | ㄴ | 2 |
b | ㄱ | 1 |
라는 a그룹의 ㄱ갯수와 ㄴ의 갯수 b그룹의 ㄱ의 갯수와 ㄴ의 갯수를 알수있게된다,
group by뒤에있는 컬럼의 이름의 순서는 아무 상관없다.
원본데이터에서 조건을 필터할때 where
필터한 조건을 특정한 그룹으로 묶어야 할때는 group by
특정한 조건을 묶은 뒤에 그 그룹에 다시한번 조건을 추가(예 : 100이상인 그룹만 출력) 해야 할때는 having을 쓴다
select c1, count(*)
from table
where c1>=500 //c1테이블이 500이상인 값만 찾아서 count한다
group by c1 (c1이라는 그룹을 기준으로 c1의 value에 종류별로 숫자를 샌다)
having count(*) > 3 //그룹을 기준으로 count한 열 중의 갯수가 3이상인것만 출력한다.
본 내용은 데이터리안 'SQL 데이터 분석 캠프 입문반' 을 수강하며 작성한 내용입니다.