[RollUp함수] 자동으로 소계/합계를 구해주는 함수 group by절에 주어진 조건으로 소계값을 구해준다.
select deptno 부서번호, position 직위, sum(pay) 총급여 from professor group by position, rollup(deptno);
select position, count(*), sum(pay) from professor group by rollup(position);
[Cube함수] - 전체 총합계까지 출력하려면 cube
HAVING절은 집계함수를 가지고 있다 GROUP BY절은 X
-Q.연봉이 2000 이상인 부서의(부서별) 부서번호와 평균급여를 구하시오 --having절로 조건주기(연봉2000) - 훨씬 줄어든 결과값 나옴 select deptno, round(avg(sal),0) from emp group by deptno having avg(sal)>=2000 order by deptno;
-부서 번호가 10,20 중에서 직군별 직원수 2명 이상인 경우만 조회하시오 select job, count() cnt from emp where deptno in('10','20') --조건을 굳이 주고싶다면 이렇게 group by job having count()>2; --구한 사람이 2명 이상이야
-Q.emp에서 deptno가 10,20,30번 중에서 부서번호가 20인 직군의 부서갯수를 구하시오 --부서번호가 20인 -> having절 조건 select job, deptno, count(*) from emp where deptno in('10','20','30') --굳이 조건을 주자면//전체조건이므로 생략해도 무방 --where조건이 반드시 들어가진 않는다 group by job, deptno having deptno='20'; --20번들만 나오게 찍기
-Q.emp에서 직군별로 직군, 급여 합계 (Manager직군만 제외)를 구하되 급여합계가 5000만 구해서 급여가 높은순으로 정렬하시오 select job, sum(sal) "급여 합계" from emp where job not in ('MANAGER') --MANAGER 제외 group by job --직군별로 그룹 having sum(sal)>=5000 --급여 합계가 5000이상 order by sum(sal) desc; -- 급여 합계 내림차순
-제약조건 --PRIMARY KEY(PK) : 중복되지않는것 --FOREIGN KEY(FK) : 연결되는것
->(stu에) --제약조건 주어서 새로운 테이블 생성 --제약조건을 줄게요 CONSTRAINT create table sawon(num number(5) CONSTRAINT sawon_pk_num primary key, name varchar2(20), gender varchar2(10), buseo varchar2(30) constraint sawon_ck_buseo check(buseo in ('개발부','인사부','교육부')), pay number(10) default 1200000);
-시퀀스
-insert 10개정도 해주세요 create sequence seq_sawon; —insert into sawon values(seq_sawon.nextval, '이순기','남자','홍보부',3450000);