성장 일기/쌍용교육센터 / / 2023. 1. 25. 09:39

0125/집계함수

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/ssangyonng.git에 올려두었습니다.

 

집계함수

group by와 함께 사용되면 그룹별 집계를 얻을 수 있다.

group by와 함께 사용되지 않으면 모든 컬럼을 하나로 집계한다.

-- group by에 설정된 컬럼명만 정의할 수 있다.
-- group by에서 일반 컬럼을 사용하기 위해선 집계 함수를 사용해야 한다.
-- 그룹으로 묶여진 일반 컬럼에 대한 집계를 수행
select 컬럼명, 집계 함수( 일반 컬럼 )
from 테이블명
group by 컬럼명

 

집계에 대한 총합

rollup, cube 사용

 

그룹으로 묶인 컬럼이 하나인 경우

rollup : 소계 후 전체 합계가 출력

cube : 전체 합계가 출력된 후 소계가 출력

group by rollup( 컬럼명 )
group by cube( 컬럼명 )

 

그룹으로 묶인 컬럼이 여러 개인 경우

사원테이블에서 부서에 해당하는 직무별 사원수를 예로 들어보면 순서는 아래와 같다.

group by rollup( DEPTNO, JOB )
group by cube( DEPTNO, JOB )

rollup : 부서별 직무 합 > 부서별 합 > 이후 총 합
cube : 총 합 > 직무별 합 > 부서별 총 합 > 세부 합

 

그룹으로 묶일 조건

having

group by 컬럼명
having 조건

 

rank( 순위 함수 )

조회되는 컬럼에 순위를 설정할 때 사용

order by절을 사용하지 않는다.

 

rank() over() : 동일 순위가 나온다. 동일 순위만큼 건너 뛴다.

rank() over( partition by 분류할 컬럼명 order by 정렬할 컬럼명 )
-- partition by : 분류할 컬럼명으로 묶을 때
-- order by 뒤에 asc, desc

 

row_number() over() : 동일 순위가 나오지 않는다.

row_number() over( partition by 분류할 컬럼명 order by 정렬할 컬럼명 )
-- partition by : 분류할 컬럼명으로 묶을 때
-- order by 뒤에 asc, desc

 

날짜 함수

날짜에 대한 연산을 수행

날짜에 + 연산을 사용하면 일이 연산된다.

add_month() : 월을 더할 때

add_month( 날짜, 더할 월 수 )

months_between() : 두 날짜간 월의 차이

months_between( 큰 날짜, 작은 날짜 )

 

subquery

쿼리문 안에 () 사용하여 select 쿼리문 넣어 커리문을 작성하는 쿼리문

create, insert, update, delete, select에 정의하여 사용할 수 있다.

단수행( single row ), 복수행( multi row ) 서브쿼리를 지원한다.

 

단수행 서브쿼리 : 서브쿼리가 조회하는 행이 한 행인 서브쿼리

복수행 서브쿼리 : 서브쿼리가 조회하는 행이 여러 행인 서브쿼리

 

create subquery

테이블을 복사할 때 사용( 원천 테이블에서 필요한 데이터를 추출하여 저장 )

조회되는 컬럼명, 데이터형, 크기, 레코드는 복사되나 제약사항은 복사되지 않는다.

(제약사항 중 not null 조건은 복사된다.)

 

create subquery 문법은 아래와 같다.

create table 테이블명 as ( select문 );
-- select의 조회된 결과로 테이블이 생성된다.

 

insert subquery

다른 테이블의 컬럼값을 사용하여 insert할 때 사용

단수행 서브쿼리와 복수행 서브쿼리 모두 사용할 수 있다.

 

단수행

다른 컬럼의 값 하나를 조회하여 insert

문법은 아래와 같다.

insert into 테이블명( 컬럼명1,컬럼명2...) values( 값1,( select문 ),값3...);

 

복수행

다른 테이블에 여러 컬럼에 여러 레코드를 조회하여 insert

정산할 때 주로 사용

문법은 아래와 같다.

insert into 테이블명(컬럼명1,컬럼명2...) ( select문 );

 

update subquery

다른 컬럼의 값으로 변경할 때 사용

단수행 서브쿼리만 가능하다.

문법은 아래와 같다.

update 테이블명
set 컬럼명=값, 컬럼명=( select문 )...
where 컬럼명=( select문 );

 

delete subquery

다른 테이블의 값을 사용하여 레코드를 삭제할 때 사용

단수행 서브쿼리만 가능하다.

문법은 아래와 같다.

delete 
from 테이블명
where 컬럼명 = ( select문 );

 

select subquery

다른 테이블 컬럼 값을 사용하여 조회할 때 사용

단수행, 복수행, scalar subquery 3가지로 사용 가능

 

단수행

select 컬럼명1, 컬럼명2...
from 테이블명
where 컬럼명 = ( select문 );

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0127/테이블 제약 조건  (0) 2023.01.27
0126/집계함수  (0) 2023.01.26
0120/DBMS 함수  (0) 2023.01.20
0119/group by, order by, 함수  (0) 2023.01.19
0118/update, delete, select  (0) 2023.01.18
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유