본문 바로가기
Oracle/View

데이터 베이스_ 오라클 VIEW [view 종류, 관리] 단순뷰 & 그룹함수

by Super Santj 2019. 7. 2.

바로

문제_

단순뷰에서도 그룹함수 사용이 가능하다. 부서별로 최대급여를 조회할 수 있는 뷰를 작성하시오. 

부서번호, 최대급여 순으로 출력할것

=>힌트 group by deptno

(뷰의 내용도 수정이 가능하게 작성할것!)

 

해설_

 

SQL> create or replace view v_maxsal
  2  as select deptno,max(sal)
  3  from emp
  4  group by deptno;
as select deptno,max(sal)
                 *
2행에 오류:
ORA-00998: 이 식은 열의 별명과 함께 지정해야 합니다

 

위와 같이 입력을 하게될시 오류가 발생하게된다.

에러가 나오는 이유는 뷰가 아닌 상황에선 에러가 안난다.

 

팁_

뷰를 작성할때 실행시킬 SQL 구문에 일반 필드(존재하는)는 상관없다 하지만 가상필드( max(sal) ), 또는

계산 필드를 사용할시 존재하는 필드가 아니기때문에 반드시 컴퓨터 즉 오라클에게 가상필드를 사용하고싶다고 알려줘야하는데, 이때 알려주는 방법을 해당 가상 필드에 별칭을 부여해주면 된다.

 

SQL> ed
file afiedt.buf(이)가 기록되었습니다

  1  create or replace view v_maxsal
  2  as select deptno,max(sal) as "최대 급여"           // 이렇게 max(sal)에 별칭을 부여하면 뷰가 생성이 된다
  3  from emp
  4* group by deptno
SQL> /

뷰가 생성되었습니다.

 

//결과보기

 

SQL> select * from v_maxsal;   => 뷰에서 그룹함수 사용이 가능하지만, 별칭을 부여해야 한다.(단순뷰 에서만!)

    DEPTNO  최대 급여
---------- ----------
        30       2850
        20       3000
        10       5000

댓글