여러 행을 그룹으로 하여 하나의 행으로 결과값을 반환하는 함수입니다.
반환되는 행의 개수가 달라지기 때문에 그룹으로 묶을 기준을 잘 정해야 합니다.
COUNT
: 행의 숫자 (그룹핑된 행 중에 값이 null이 아닌 행의 건수)
COUNT(*)
: 그룹핑된 모든 행 건수
MAX
: 최대값
MIN
: 최소값
SUM
: 합계
AVG
: 평균
그룹 함수의 결과는
GROUP BY절에 온 컬럼의 행 개수로 결정됩니다.
SELECT
FROM
WHERE
GROUP BY column
HAVING group function condition
ORDER BY column
그룹 함수에서는 null 값이 자동으로 계산에서 제외 (NULL처리 함수를 쓸 필요 없음)
GROUP BY 절에 작성된 컬럼이 아닌 컬럼은 SELECT절에 올 수 없음
(하나의 값으로 고정된 상수는 올 수 있음. 즉, 그룹핑으로 행의 수가 줄어든 상태이니, 행의 수가 다른 컬럼은 오지 못하는 것)
SELECT ~~empno~~, MAX(sal) --> empno 컬럼 때문에 에러
FROM emp
GROUP BY deptno;
WHERE절 말고 HAVING 절에 씀 SELECT deptno
FROM emp
GROUP BY deptno
HAVING COUNT(*) >= 4; --> 행의 개수가 4개 이상인 부서만 조회
SELECT COUNT(*) --> 그룹을 지정하지 않으면 전체 행의 숫자를 카운트
FROM emp;