Oracle

Oracle.그룹 쿼리와 집계함수

calla1013 2025. 5. 31. 19:17
📊 Oracle SQL 그룹 함수 완전 정복!

 

 

📊 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