📊 Oracle SQL 그룹 함수 완전 정복!
그룹 함수는 많은 데이터를 빠르게 요약할 수 있는 데이터 분석의 필수 도구입니다. SUM, AVG, COUNT, MAX, MIN은 기본이고, GROUP BY, ROLLUP, CUBE, HAVING까지 익혀두면 데이터 요약의 고수가 될 수 있어요!
💡 TIP: SELECT 절에서는
GROUP BY에 없는 컬럼을 그룹 함수 없이 단독으로 사용할 수 없습니다!1. SUM(): 합계 구하기
SELECT stu_name, SUM(stu_kor) AS total_kor
FROM students
GROUP BY stu_name
ORDER BY total_kor DESC;
학생별 국어 점수 총합을 구하는 대표적인 예제입니다.
2. AVG(): 평균 구하기
SELECT stu_grade, AVG(stu_math) AS avg_math
FROM students
GROUP BY stu_grade;
학년별 수학 점수 평균을 구할 수 있습니다.
3. COUNT(): 개수 세기
SELECT COUNT(*) AS total_students
FROM students;
테이블 전체 학생 수를 확인할 수 있어요.
4. MAX(), MIN(): 최댓값 / 최솟값
SELECT MAX(bank_money) AS max_money,
MIN(bank_money) AS min_money
FROM bank;
가장 많은 금액과 가장 적은 금액을 비교할 때 자주 사용됩니다.
5. GROUP BY + HAVING
SELECT stu_name, SUM(stu_eng) AS total_eng
FROM students
GROUP BY stu_name
HAVING SUM(stu_eng) > 400;
그룹화 후 조건을 걸 때는 HAVING을 사용해야 해요. WHERE는 개별 행 조건입니다.
6. ROLLUP: 중간 합계 구하기
SELECT stu_grade, stu_class, SUM(stu_math) AS total_math
FROM students
GROUP BY ROLLUP (stu_grade, stu_class);
ROLLUP은 계층적으로 중간 합계를 자동으로 계산해주는 훌륭한 도구입니다.
7. CUBE: 모든 조합의 집계
SELECT stu_grade, stu_class, SUM(stu_math) AS total_math
FROM students
GROUP BY CUBE (stu_grade, stu_class);
CUBE는 조합 가능한 모든 경우의 합계를 보여줍니다. 복합적인 분석에 유용해요.
8. DISTINCT vs GROUP BY
-- 중복 제거 방식
SELECT DISTINCT stu_name FROM students;
-- 같은 결과, GROUP BY 방식
SELECT stu_name FROM students GROUP BY stu_name;
단순한 중복 제거는 DISTINCT로, 집계와 함께라면 GROUP BY를 사용합니다.
🎯 마무리하며
Oracle SQL에서 그룹 함수는 데이터 요약, 리포트, 통계 분석에 필수적인 기능입니다. 반복해서 연습하고 실무 시나리오에 적용해보세요. SQL 실력은 곧 분석 실력입니다!
'Oracle' 카테고리의 다른 글
| Oracle.SQL고급 (0) | 2025.06.03 |
|---|---|
| Oracle.조인과 서브쿼리 (0) | 2025.05.31 |
| Oracle.SQL함수 (0) | 2025.05.31 |
| Oracle.SQL기본(Table) (1) | 2025.05.31 |
| Oracle.데이터 베이스 객체 (0) | 2025.05.31 |