-
[ 오라클] 예제02 - 단일함수, 그룹함수비전공자 공부일기/:: DB - SQL 2019. 5. 21. 10:09
<오라클 DB 실습예제 - 단일함수>
-- 1. 입사일이 12월인 사원의 사번, 사원명, 입사일을 검색하시오.
-- 2. 다음과 같은 결과를 검색할 수 있는 SQL 문장을 작성하시오.EMPNO ENAME 급여 7369 SMITH *******800 7499 ALLEN ******1600 ... ... ... 7934 MILLER ******1300 -- 3. 다음과 같은 결과를 검색할 수 있는 SQL 문장을 작성하시오.
EMPNO ENAME 입사일 7369 SMITH 1980-12-17 7499 ALLEN 1981-02-20 ... ... ... 7934 MILLER 1982-01-23 <오라클 DB 실습예제 - 그룹함수>
-- 1. 사원테이블에서 부서별 인원수가 6명 이상인 부서코드 검색하시오.
-- 2. 사원테이블로부터 부서번호, 업무별 급여합계를 계산하고자 한다. 다음과 같은 결과를 출력할 수 있는 SQL문장을 작성하시오.DEPTNO CLERK MANAGER PRESIDENT ANALYST SALESMAN 10 1300 2450 5000 20 1900 2975 6000 30 950 2850 5600
-- 3. 사원테이블로부터 년도별, 월별 급여합계를 출력할 수 있는 SQL 문장을 작성하시오.
-- 4-1. 사원테이블에서 부서별 커미션(comm)을 포함하지 않은 연봉의 합을 구하시오.
-- 4-2. 사원테이블에서 부서별 커미션(comm)을 포함한 연봉의 합을 구하시오.
-- 5. 사원테이블에서 SALESMAN을 제외한 JOB별 급여합계를 구하시오.<풀이 - 단일함수>
--1.
select empno, ename, hiredate from emp where hiredate like '%12%';
-- 입사일이 12월이 아닌, 2012년 또는 12일인 사원도 함께 검색됨.
select empno, ename, hiredate from emp where hiredate like '__/12/__';-- 정확한 양식을 지켜줘야 답이 나옴
select empno, ename, hiredate from emp where to_char(hiredate, 'MM')='12';-- 가장 정확한 답변
--2.
select empno, ename, lpad(sal, 10, '*') 급여 from emp;
--3.
select empno, ename, to_char(hiredate, 'yyyy-mm-dd' 입사일 from emp;
<풀이 - 그룹함수>
-- 풀이 1.
select deptno from emp group by deptno having count(*)>=6;또는 select deptno, count(*) from emp group by deptno having count(*)>=6;
-- 풀이 2.
select deptno,
SUM(decode(job, 'CLERK', sal)) CLERK,
SUM(decode(job, 'MANAGER', sal)) MANAGER,
SUM(decode(job, 'PRESIDENT', sal)) PRESIDENT,
SUM(decode(job, 'ANALYST', sal)) ANALYST,
SUM(decode(job, 'SALESMAN', sal)) SALESMAN
from empgroup by deptno
order by deptno;
-- 풀이 3.
select to_char(hiredate, 'yyyy') 년, to_char(hiredate, 'mm') 월, sum(sal)
from emp
group by to_char(hiredate, 'yyyy'), to_char(hiredate, 'mm')
order by 년, 월; -- ORDER BY문에서는 ALIAS 쓸 수 있음.(GROUP BY문에서는 안 됨)
-- 풀이 4-1.
select deptno, sum(sal)*12 연봉 -- "연봉"은 ALIASfrom emp
group by deptno
order by deptno;
-- 풀이 4-2.
select deptno, sum(sal+nvl(comm, 0))*12 연봉from emp
group by deptno
order by deptno;
-- 풀이 5.
select job, sum(sal) from emp group by job having job<>'SALESMAN';또는 select job, sum(sal) from emp where job<>'SALESMAN' group by job
'비전공자 공부일기 > :: DB - SQL' 카테고리의 다른 글
[오라클] 예제03 - JOIN함수, 서브쿼리 (0) 2019.05.22 오라클 DB 용어, 명령문 정리03 - 분석함수, JOIN함수, 서브쿼리 (0) 2019.05.21 [ 오라클] 예제01 - 기호, 연산자, SELECT문 (0) 2019.05.21 오라클 DB 용어, 명령문 정리02 - 함수(문자, 숫자, 날짜, 단일, 그룹) (0) 2019.05.20 오라클 DB 용어, 명령문 정리01 - 기호, 연산자, SELECT문 (0) 2019.05.17