ORACLE DB

▶GROUP BY◀

chojdsj 2023. 5. 25. 17:50
728x90
SELECT문 해석 순서

 

5 : SELECT 컬럼명 AS 별칭, 계산식, 함수식

 

1: FROM 참조할 테이블명

 

2: WHERE 컬럼명 | 함수식 비교연산자 비교값

 

3 : GROUP BY 그룹을 묶을 컬럼명

 

4 : HAVING  그룹함수식 비교연산자 비교값

 

6 : ORDER BY 컬럼명 | 별칭 | 컬럼순번 정렬방식 [NULLS FIRST | LAST]

 

 

 

 

GROUP BY절

 

- 같은 값들이 여러개 기록된 컬럼을 가지고 같은 값들을 하나의 그룹의 묶음

 

- 작성법 : GROUP BY 컬럼명 | 함수식 ....

 

- 그룹으로 묶은 값에 대해서 SELECT절에서 그룹함수를 사용함

 

- 그룹 함수는 단 한개의 결과값만 산출하기 때문에 그룹이 여러개일 경우 오류 발생 

 

- 여러개의 결과값을 산출하기 위해 그룹 함수가 적용된 그룹의 기준을 ORDER BY절에 기술해서 사용

 

 

 

** GROUP BY 사용 시 주의사항 **

- SELECT 문에 GROUP BY절을 사용할 경우, SELECT 절에 명시한 조회하려는 컬럼중
그룹 함수가 적용되지 않은 컬럼은 모두 GROUP BY절에 작성해야함 

 

 

HAVING절

 

- 그룹함수로 구해 올 그룹에 대한 조건을 설정할 때 사용 

- 작성법 : HAVING 컬럼명 | 함수식 비교연산자 비교값 

 

 

집계함수(ROLLUP, CUBE)

 

 

- 그룹 별 산출한 결과 값의 집계를 계산하는 함수 


- GROUP BY절에만 작성하는 함수

 



* ROLLUP*


- 그룹별로 중간 집계 처리를 하는 함수


- 그룹별로 묶여진 값에 대한 '중간 집계'와 '총 집계'를 계산하여 자동으로 추가하는 함수


- 인자로 전달받은 그룹중에서 가장 먼저 지정한 그룹별 합계와 총 합계를 구하는 함수

 



*CUBE*


- 그룹별 산출한 결과를 집계하는 함수


- 그룹으로 지정된 모든 그룹에 대한 집계와 총 합계를 구하는 함수 

 

 

 

UNION

 

- 여러개의 쿼리 결과를 하나로 합치는 연산자


- 중복된 영역을 제외하여 하나로 합친다. (OR 같은 개념-> 합집합)

--> 부서코드가 D5,6,9인 사원들이 출력되어진다.

 


- UNION ALL은 OR 결과값에 AND 결과값이 더해진것. UNION과의 차이점은
중복영역을 모두 포함시킨다.(합집합 + 교집합)

 

 

INTERSECT, MINUS

 

- INTERSECT : 여러개의 SELECT한 결과에서 공통 부분만 결과로
추출, AND 같은 개념 (교집합)

--> 위와 아래의 SELECT절을 모두 만족시키는 결과 출력

 

 



- MINUS : 선행 SELECT한 결과에서 다음 SELECT결과와 겹치는 부분을
제외한 나머지 부분만 추출 (차집합 개념)

--> 위 SELECT절에서 아래SELECT절의 결과를 뺀 나머지만 출력한다.

 

 

 

 

 

 

'ORACLE DB' 카테고리의 다른 글

▶TCL◀  (0) 2023.05.25
▶DML◀  (0) 2023.05.25
▶JOIN◀  (0) 2023.05.25
▶함수◀  (1) 2023.05.18
▶SELECT◀  (0) 2023.05.18