320x100
320x100

데이터베이스구조 (humanlist)

name

age

gender

job

홍길동

21

M

soldier

김춘자

33

F

CEO

방태순

18

F

student

윤호상

23

M

nurse

장지태

27

M

doctor

 

GROUP 함수의 종류

- count / sum / avg / max / min / stddev(표준 편차 출력) / variance(분산 값 출력)

- 사용예시 

 : select count(*), count(age) from humanlist;

 

- group by (특정 조건으로 세부적인 그룹화 하기)

 : select name, avg(nvl(age,0)) "avgerage" from humanlist group by name;

 

- having() (그룹핑한 조건으로 검색하기)

 : select name, avg(nvl(age,0)) from humanlist group by name having avg(nvl(age,0)) > 20;

 

- rollup() (자동으로 소계와 합계 구하기)

 : select --- from --- group by rollup(a, b);

 

- cube() (소계와 전체 합계 출력)

 : select --- from --- group bu cube(a,b);

 

- grouping sets

 : select --- from --- group by grouping sets(a,b);

 

- list agg (문자열 가로 정렬)

 : select ---, listagg(---,'구분자') within group(order by ---);

 

=> group by 절 사용시 주의 사항

 1. select 절에 사용된 그룹함수 이외의 컬럼이나 표현식은 반드시 group by 절에 사용되어야 한다

 2. group by 절에는 반드시 컬럼명이 사용되어야 한다

 3. 

 

 

복수행 함수

- pivot (행과 열로 이루어진 표 출력)

 : select --- from (select --- from ---) pivot (--- for --- in ('속성이름' as '표시이름'), .... 하략) order by ---;

 : pivot (행을 열로) / unpivot (열을 행으로)

 

- decode (pivot 대용 기능)

 : select decode(---, '열이름', 내용) 열이름 from ---;

 

- lag (전 행 값 추출)

 : select lag(---, 오프셋, 기본 출력 값) over(order by 정렬할 컬럼) from ---;

 

- lead (다음 행 값 추출)

 : select lead(---, 오프셋, 기본 출력 값) over (order by 정렬할 컬럼) from ---;

 

- rank (순위 출력)

 : select rank() within group(order by 조건컬럼) from ---;

 : select rank() over(order by 조건컬럼) from ---;

 

- dense_rank (중복포함 순위)

 : select dense_rank()over(order by 조건컬럼) from ---;

 

- row_number (행번호 출력)

 : select row_number() over (order by 조건컬럼) from ---;

 

- sum() over (누적 값 출력)

 : select sum(컬럼명) over (order by 조건컬럼) from ---;

 

- ratio_to_report (비율 구하기)

 : select round((ratio_to_report(sum(---)) over ())*100,2) from ---;

 

 

 

 

 

 

300x250
728x90