그룹함수

select 
from
where
group by
having
order by

 

//그룹에 대한 조건식은 having 조건식을 사용한다.
//부서별로 사원의수가 4명 이상인 정보를 찾아 부서번호와 급여의 합계를 출력 
SQL> select deptno,sum(sal),count(*) from emp
  2  group by deptno having count(*)>=5 order by deptno;

    DEPTNO   SUM(SAL)   COUNT(*)
---------- ---------- ----------
        20      10875          5
        30       9400          6
//그룹함수의 중첩
//max(avg(sal)): 각 부서번호 마다의 avg를 구한 후, avg 중 가장 큰 값 구하기
SQL> select max(avg(sal)),max(sum(sal)),min(min(sal)),max(max(sal))
  2  from emp group by deptno;

MAX(AVG(SAL)) MAX(SUM(SAL)) MIN(MIN(SAL)) MAX(MAX(SAL))
------------- ------------- ------------- -------------
   2916.66667         10875           800          5000
//emp테이블에서 업무가 manager가 아닌 사원에 대하여 부서별로 급여의 합이 
//6500이상인 부서의 정보를 출력? (부서번호, 급여의 합계 순으로 출력하되 급여의 합계가
//높은순으로 정렬할 것)
SQL> select deptno,sum(sal) from emp where job<>'MANAGER'
  2  group by deptno having sum(sal)>=6500 order by sum(sal) desc;

    DEPTNO   SUM(SAL)
---------- ----------
        20       7900
        30       6550

 


집계함수

count,sum,min,max,avg 와 같은 집계 함수는

숫자데이터 뿐만 아니라 날짜, 문자 데이터에서도 사용이 가능하다.

SQL> select min(ename),max(ename),min(hiredate),max(hiredate),min(sal),max(sal)
  2  from emp;

MIN(ENAME) MAX(ENAME) MIN(HIRE MAX(HIRE   MIN(SAL)   MAX(SAL)
---------- ---------- -------- -------- ---------- ----------
ADAMS      WARD       80/12/17 87/05/23        800       5000

 


DDL(CREATE, ALTER, DROP)

- CREATE(full backup)

테이블 복사하기(스키마,데이터 모두)

create table 새로만들테이블명 as select * from 복사할테이블명;

 

 

- ALTER, DROP

 

기존 테이블에 필드 추가하기

alter table 테이블명 add (필드명 자료형 제약조건);
//우선 변경하고자하는 테이블에 데이터가 있는지 확인
//모두 뽑아버리면 수많은 데이터가 나올 수도 있으니 숫자로 확인
select count(*) from test_table;

//테이블에 데이터가 없는 경우에만 not null 제약조건을 가진 필드를 추가할 수 있다. 
alter table test_table add (tel varchar2(10) not null);

//default값 설정
alter table test_table add (hiredate date default sysdate);
                           (필드명 자료형 default 적용시킬값)
//insert into test_table values(1,'김',default); //id,name,hiredate

 

기존 테이블의 필드 수정하기

alter table 테이블명 modify (변경할필드명 자료형 제약조건);

 

기존 테이블에서 필드 삭제하기

데이터가 존재하는 필드는 삭제하지 못함.

alter table 테이블명 drop column 삭제시킬필드명;

 

기존 테이블에서 필드명 변경

//필드명 변경
alter table 테이블명 rename column 변경전필드명 to 변경후필드명; 

 

 

+ Recent posts