그룹함수 GROUP BY
이 포스팅은
Oracle SQL 실전 오라클 SQL 가이드
Oracle SQL
『ORACLE SQL』는 실전 오라클 SQL 가이드북이다. 초보자들도 조인, 서브 쿼리를 쉽게 배울 수 있도록 예제를 통해 설명한다. 오라클 기반의 실습 환경을 바탕으로 쓰여 졌지만 가능한 표준 SQL을 근
book.naver.com
책을 읽고 요약하여 정리하였습니다.
GROUP BY
그룹 함수를 GROUP BY 절에 지정된 컬럼의 값이 같은 행에 대해서 통계 정보를 계산
~ 별로 통계값을 계산하고자 하면 반드시 GROUP BY절에 ~별로에 해당하는 컬럼을 기술해야 함.
Example ) AVG함수를 job 값이 같은 행끼리만 계산
SELECT job, ROUND(AVG(sal)), ROUND(AVG(sal*12+nvl (comm,0)))
FROM emp
GROUP BY job
카디널리티
- 검색되는 각 컬럼의 행의 수를 의미하거나 컬럼에 저장된 값의 종류를 의미하기도 함
- 동시에 검색되는 각 컬럼과 항목들의 행의 개수를 의미
- 그룹 함수에서 카디널리티는 동시에 검색되는 각 컬럼과 항목들의 행의 개수를 의미
- 하나의 SELECT 문장에서 각 검색 항목들은 반드시 카디널리티가 일치해야 함.
- 이를 위해 GROUP BY 절을 이용
GROUP BY와 정렬
- 오라클은 기본적으로 GROUP BY를 수행 할 때, 정렬을 수행하지 않고 해시 함수를 이용
- 그러므로 결과 값도 GROUP BY 절에 기술된 컬럼으로 정렬되서 검색 되지 않음.
- 대부분의 경우에 정렬보다는 해시의 수행 성능이 훨씬 빠르기 때문.
- 정렬된 검색결과를 얻고자 한다면 ORDER BY 절을 기술
오라클 GROUP BY 관련 오류
https://ckstmsla.tistory.com/entry/ORA-00979-not-a-GROUP-BY-expression