집계입문
GROUP BY
특정 컬럼 값이 같은 행들을 묶어서 통계를 내는 절
정의
왜 중요한가?
리포트와 통계의 출발점. 부서별 인원수, 월별 매출, 카테고리별 판매량 같은 모든 요약 통계는 GROUP BY로 시작한다. 일반 컬럼을 GROUP BY에 안 넣고 SELECT에 적으면 오라클은 에러(ORA-00979)를 낸다.
틀리기 쉬운 포인트
예시
SELECT department_id, COUNT(*), AVG(salary) FROM employees GROUP BY department_id HAVING COUNT(*) >= 3;
성능 포인트
!GROUP BY 컬럼이 인덱스의 선두 컬럼과 일치하면 정렬 비용 없이 처리될 수 있다. PGA가 부족하면 Disk Sort로 떨어져 성능이 급락한다.