데이터베이스
group by
@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보다 큰 그룹만 선택하는 쿼리