본문 바로가기
Database

[오라클] 그룹 / 집합 함수

by 서피 2021. 3. 9.

1. 여러 그룹별로 나누어 출력하기 - GROUP BY

select dept_code, sum(salary) from employee group by dept_code;

직원들의 salary 합계를 dept_code 별로 나누어서 계산한다.

dept_code가 겹치는 행이 없어진다.

 

실행결과

 

 

2. 각 그룹별 집계를 함께 출력하기 - ROLLUP

select dept_code, sum(salary) from employee group by rollup(dept_code, job_code) order by 1;

실행결과

3, 5, 9, 12, 14, 17행에 각 dept_code의 총합이 출력되었다.

 

 

3. 중간집계를 모두 모아서 출력하기 - CUBE

select dept_code, sum(salary) from employee group by cube(dept_code, job_code) order by 1;

실행결과

 

 

 

4. 합집합 - UNION ALL

select emp_id, emp_name, dept_code, salary from employee where dept_code = 'D5' union all
select emp_id, emp_name, dept_code, salary from employee where salary > 3000000;

A union all B

두 조건에 맞는 결과가 합쳐져서 출력된다.

 

실행 결과

6행까지는 첫 번째 조건, 7행부터는 두 번째 조건

 

 

5. 교집합 - INTERSECT

select emp_id, emp_name, dept_code, salary from employee where dept_code = 'D5' intersect
select emp_id, emp_name, dept_code, salary from employee where salary > 3000000;

A intersect B

A와 B 모두 만족하는 행만 출력된다.

 

실행결과

두 명 뿐. D5 부서는 월급이 짜다

 

 

 

6. 차집합 - MINUS

select emp_id, emp_name, dept_code, salary from employee where dept_code = 'D5' minus
select emp_id, emp_name, dept_code, salary from employee where salary > 3000000;

A minus B 

A조건을 만족하는 행에서 B조건을 만족하는 행을 제외한다.

 

실행 결과

dept_code 가 D5인 행 중에서 월급이 3000000이상은 제외

 

 

'Database' 카테고리의 다른 글

[오라클] 순위 가져오기  (0) 2021.03.10
[오라클] 테이블 합치기  (0) 2021.03.09
[오라클] 데이터 변환 함수  (0) 2021.03.08
[오라클] 날짜 표현  (0) 2021.03.08
[오라클] 날짜처리 주요 함수  (0) 2021.03.08

댓글