본문 바로가기
Lecture/SQL & Oracle

[SQL 기본만 알아도 할껀 다한다.] Group by 에 대해

by 알 수 없는 사용자 2013. 7. 11.
반응형



안녕하세요 retensi 입니다.

이번 포스트는 집계함수와 자주 함께 쓰이는 Group by (데이터 그룹화)에 대한 내용입니다.



먼저 예제를 실행할 테이블을 살펴보겠습니다.

언제나 그렇듯 HR 계정에 있는 테이블로 예제를 진행합니다.


스샷에 보이는 데이터 이외에도 여러가지 데이터가 더 있습니다. 


필요한 데이터만 뽑아보겠습니다.



집계함수와 ORDER BY에 대해선 이전 글에서 다뤘으니 다른 설명은 생략하고 

GROUP BY 만 설명을 하겠습니다.



GROUP BY 절의 job_id 를 기준으로 job_id 가 같은 데이터 행을 COUNT 하는 SQL 입니다.



SUM 함수를 추가해서 job_id 별로 연봉을 합산해보겠습니다.

IT_PROG 연봉이.. ㅋㅋㅋㅋ


그룹화와 집계함수를 함께 조합해서 쓰면 여러가지 의미있는 데이터 통계를 낼 수 있습니다.



합산된 연봉에서 10000 이 초과된 job_id 만 가져오고 싶을 때,

WHERE 에 해당 조건을 추가해봤습니다.


오류가 발생합니다.  WHERE 이하에는 함수를 쓸 수 없기 때문입니다.

이럴 경우에 사용하는 것이 HAVING 절 입니다.


WHERE 절에 있던 조건을 GROUP BY 아래 HAVING 절로 이동하였더니, 원하는 데이터가 나왔습니다.

  WHERE 

   그룹화 되기 전의 데이터를 필터링 함

   WHERE 로 제외된 데이터는 그룹화에 포함되지 않음

  HAVING

   그룹화 된 후의 데이터를 필터링 함



WHERE 가 정말 그룹화하기 전에 데이터를 필터링하는지 알아보겠습니다.

10000 초과인 연봉만 대상으로 그룹화해보겠습니다.



그룹화와 집계함수는 자주 쓰이는 기능 중에 하나 입니다.

익숙하게 쓸수 있도록 직접 예제를 작성해보는 것도 좋은 연습이 될 것 같습니다. 수고하셨습니다.