[SQL] group by정리

hanahana·2023년 1월 12일
0

group by의 응용

c1c2c3
a100
a200
a200
b100
b500
b300

이런데이터가 있다고 가정했을때
a그룹의 ㄱㄴ의 각각의 숫자
b그룹의 ㄱㄴ의 각각의 숫자를 알고싶다고 가정했을때의 쿼리문은

select c1,c2,count(*) from table
group by c1, c2

를 입력하면

c1c2count(*)
a2
a1
b2
b1

라는 a그룹의 ㄱ갯수와 ㄴ의 갯수 b그룹의 ㄱ의 갯수와 ㄴ의 갯수를 알수있게된다,
group by뒤에있는 컬럼의 이름의 순서는 아무 상관없다.

Group by 와 where, having

원본데이터에서 조건을 필터할때 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 데이터 분석 캠프 입문반' 을 수강하며 작성한 내용입니다.

profile
hello world

0개의 댓글