emp라는 테이블을 우선적으로 생성후 데이터를 추가하였다.
이 테이블에서 select를 이용한 Query 를 작성해보자
Oracle 집계함수
※as 다음에 가짜 컬럼명 (alias)
● 총갯수(count)
select count(*) as 총사원수 from emp;
● 평균(avg)
select avg(sal) as 급여평균 from emp;
● 합(sum)
select sum(sal) as 급여합 from emp;
● 최대값(max)
select max(sal) as 최대급여 from emp;
● 최소값(min)
select min(sal) as 최소급여 from emp;
Oracle 서브쿼리 문제
※subquery(쿼리문 안에 또 다른 쿼리문을 포함할 수 있는 쿼리문장)는 소괄호로 감싸놓아야 한다
● 최소급여를 받는 사원의 이름, 급여를 출력
>select ename, sal from emp
where sal=(select min(sal) from emp);
● ALLEN 과 부서가 같은 사원들의 이름, 입사일, 부서번호 출력
>select ename, hiredate, deptno from emp
where deptno=(select deptno from emp where ename='ALLEN');
● 이름에 t자가 들어가는 사원들의 급여의 합
>select sum(sal) as 급여합 from emp where ename like '%T%';
● 최대급여를 받는 사원의 입사일
>select hiredate from emp where sal=(select max(sal) from emp);
● 최대급여를 받는 사원보다 입사일이 늦은 사원의 이름, 입사일 출력하되(입사일 기준으로 오름차순 정렬)
>select ename, hiredate from emp
where hiredate > (
select hiredate from emp where sal=(select max(sal) from emp)
) order by hiredate asc;
Oracle ANSI 함수 외의 함수
● 사원의 이름과 이름의 글자수를 출력하시오 (length 함수)
>select ename as 사원명, length(ename) as 이름길이 from emp;
● 사원의 원래이름과 소문자로 변환한 이름을 출력하시오 (LCASE or LOWER 함수)
>select ename , lcase(ename) from emp;
● 사원의 이름 중 KING이라는 사원의 이름을 왕으로 출력하시오 (replace함수)
형식 : replace('조사대상','어떤문자열?','어떻게바꿀지?')
>select replace(ename,'KING','wang') from emp ;
● 사원명 앞에 name: 붙게 이름을 출력하시오(concat 함수)
형식 : concat('문자열1','문자열2','문자열3'...)
>select concat('name:',ename) from emp;
'개발 > DB' 카테고리의 다른 글
MySql csv 파일 가져오기 / 제약조건(Index) (0) | 2021.03.22 |
---|---|
Oracle 제약조건 (0) | 2021.03.14 |
Oracle DML (0) | 2021.03.07 |
Oracle 시작 / 사용자 및 테이블 생성 (0) | 2021.03.07 |
댓글