@blackcat 2024. 2. 16. 15:08

GROUP BY

 

GROUP BY를 사용하면 특정 열을 기준으로 데이터를 그룹화하여 집계 함수를 적용할 수 있다. 그룹화 없이 집계 함수를 사용하는 경우 전체 데이터에 대한 결과가 나온다.

 

예제 데이터 (직원 테이블):

사번 이름 부서
1 홍길동 개발
2 김철수 마케팅
3 이영희 개발
4 박영수 인사
5 정미희 마케팅

 

 

기존 SELECT 조회    - >     SELECT 부서, COUNT(*) AS 직원수 FROM 직원 ;

 


부서 직원수
(null) 5

 

 

GROUP BY 그룹화시 조회  ->     SELECT 부서, COUNT(*) AS 직원수 FROM 직원 GROUP BY 부서;

 




부서 직원수
개발 2
마케팅 2
인사 1

 


기타 등등

 

SELECT 부서, COUNT(*) AS 직원수 FROM 직원 GROUP BY 부서;

-> 부서를 기준으로 그룹화하고, 각 부서별로 직원수를 세는 쿼리

 

SELECT 부서, SUM(급여) AS 총급여 FROM 직원 GROUP BY 부서;

-> 부서를 기준으로 그룹화하고, 각 부서별로 총 급여를 계산하는 쿼리

 

SELECT 부서, AVG(급여) AS 평균급여 FROM 직원 GROUP BY 부서;

-> 부서를 기준으로 그룹화하고, 각 부서별로 평균 급여를 계산하는 쿼리

 

SELECT 부서, MIN(급여) AS 최소급여, MAX(급여) AS 최대급여 FROM 직원 GROUP BY 부서;

-> 부서를 기준으로 그룹화하고, 각 부서별로 최소 급여와 최대 급여를 계산하는 쿼리

 

SELECT 부서, COUNT(*) AS 직원수 FROM 직원 GROUP BY 부서 HAVING COUNT(*) > 1;

-> 부서를 기준으로 그룹화하고, 직원수가 1보다 큰 그룹만 선택하는 쿼리