Database/SQL DML

그룹함수 GROUP BY

찬스님 2021. 5. 6. 15:30
300x250

이 포스팅은

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

 

반응형