GROUP BY

GROUP BY는 특정 컬럼을 기준으로 그룹화 하는 명령어로 그룹화를 통해 통계 데이터를 추출할 수 있습니다.

 

SELECT 컬럼
FROM 테이블명
WHERE 조건
GROUP BY 그룹화할 컬럼
HAVING 그룹화할 조건

부서에서 연봉이 5000 이상인 정보를 추출

SELECT
DEPT.NAME,
COUNT(EMP.ID),
SUM(EMP.SALARY),
AVG(EMP.SALARY),
MIN(EMP.SALARY),
MAX(EMP.SALARY)
FROM EMPLOYEE EMP
JOIN DEPARTMENT DEPT ON (DEPT.ID = EMP.DEPT_ID)
GROUP BY DEPT.ID
HAVING AVG(EMP.SALARY) >= 5000

그룹 함수

함수명 기능 사용
 COUNT  행의 수를 계산한다.   COUNT(컬럼 | *) 
 MAX  값들 중에 최대 값을 반환한다.   MAX(컬럼) 
 MIN  값들 중에 최소 값을 반환한다.   MIN(컬럼) 
 AVG  평균 값을 계산한다.   AVG(컬럼) 
 SUM  총 합계를 계산한다.   SUM(컬럼)
 VARIANCE  분산을 계산한다.   VARIANCE(컬럼) 
 STDDEV  표준편차를 계산한다.   STDDEV(컬럼) 

GROUP BY 절

GROUP BY 절은 반드시 그룹함수와 함께 쓰이며 그룹 함수의 결과 값은 GROUP BY 절에 기술된 컬럼의 항목들의 행의 갯수에 의해 결정된다.

 

HAVING 절

HAVING 절에서는 GROUP BY 절로 인해 생긴 각 그룹에 대하여 조건을 적용하기 위해 사용한다.

 

select 컬럼, 그룹함수(컬럼) from 테이블명 where 조건 group by 대상 having 조건;

-- 부서별로 묶음
select deptNo, count(*) from emp group by deptNo;

-- 부서별로 묶고, 부서 인원이 4명 이상인 부서만 표시
select deptNo, count(*) from emp group by deptNo having count(*) > 4;

 

+ Recent posts