물론입니다! Oracle SQL에서 **그룹 함수(Group Functions)**는 여러 행(Row)의 값을 그룹으로 묶어 하나의 결과 값으로 요약할 때 사용하는 함수입니다. 주로 GROUP BY절과 함께 사용되며, **집계 함수(Aggregate Functions)**라고도 부릅니다.
⸻
✅ Oracle의 주요 그룹 함수 종류
함수명 | 설명 | 예제 SQL | 결과 예시 |
---|---|---|---|
COUNT() | 행 수를 셉니다 (NULL 제외) | SELECT COUNT(*) FROM EMPLOYEE; | 전체 직원 수 |
SUM() | 숫자 컬럼의 합을 구합니다 | SELECT SUM(SALARY) FROM EMPLOYEE; | 전체 급여 합계 |
AVG() | 평균 값을 계산합니다 | SELECT AVG(SALARY) FROM EMPLOYEE; | 평균 급여 |
MAX() | 최댓값을 반환합니다 | SELECT MAX(SALARY) FROM EMPLOYEE; | 최고 급여 |
MIN() | 최솟값을 반환합니다 | SELECT MIN(SALARY) FROM EMPLOYEE; | 최저 급여 |
STDDEV() | 표준 편차를 구합니다 | SELECT STDDEV(SALARY) FROM EMPLOYEE; | 급여 분산도 |
VARIANCE() | 분산을 구합니다 | SELECT VARIANCE(SALARY) FROM EMPLOYEE; | 급여 분산 값 |
⸻
✅ 기본 예제
SELECT COUNT(*) AS TOTAL_EMPLOYEES,
SUM(SALARY) AS TOTAL_SALARY, AVG(SALARY) AS AVG_SALARY, MAX(SALARY) AS MAX_SALARY, MIN(SALARY) AS MIN_SALARY
FROM EMPLOYEE;
EMPLOYEE 테이블의 직원 수, 급여 합계, 평균, 최고/최저 급여를 한 번에 출력합니다.
⸻
✅ GROUP BY와 함께 사용하는 예제
SELECT DEPT_ID,
COUNT(*) AS EMP_COUNT, AVG(SALARY) AS AVG_SALARY
FROM EMPLOYEE GROUP BY DEPT_ID;
부서별로 직원 수와 평균 급여를 계산합니다.
⸻
✅ HAVING 절로 그룹 조건 추가
WHERE는 행 필터링, HAVING은 그룹 필터링에 사용합니다.
SELECT DEPT_ID,
COUNT(*) AS EMP_COUNT
FROM EMPLOYEE GROUP BY DEPT_ID HAVING COUNT(*) >= 5;
직원 수가 5명 이상인 부서만 조회합니다.
⸻
✅ 주의할 점 • NULL은 무시되는 함수가 많습니다 (COUNT(col), SUM(col), AVG(col) 등) • GROUP BY에서 사용되지 않은 컬럼은 SELECT에 단독으로 쓸 수 없습니다. • 단일 결과를 원할 경우 GROUP BY 없이 사용할 수 있습니다.
⸻
필요하시면 실무에서 자주 사용하는 그룹 함수 예제, 예를 들면 월별 매출 요약, 카테고리별 사용자 수, 평균 이상 매출 추출 같은 시나리오도 만들어드릴 수 있습니다.
어떤 용도로 사용하시려는지 알려주시면, 더 정확한 예제를 설계해드릴 수 있습니다. 도움이 더 필요하신가요? 💡