[연습문제1]
문1>관리자코드가 7698이나7839 중 직업이 salesman인 사람의 이름과 부서코드를 보이시오.
SQL> select ename, deptno from emp
2 where mgr in('7698','7839') and job='SALESMAN';
문2>수당이 null아닌 사람만 보이시오.
SQL> select * from emp
2 where comm is not null;
문3>이름이 n으로 끝나는 사람중에 급여가 1500이상인 사람만 조회하시오.
SQL> select * from emp
2 where ename like '%N' and sal>=1500;
문4>급여와 수당을 합친 실수령액이 2500이하인 사람의 이름과 실수령액을 보여라.
SQL> select ename 이름, sal+comm 실수령액 from emp
2 where (sal+comm)<=2500;
문5>실수령액이 많은 순서대로 나타내시오.
SQL> select * from emp
2 order by sal+nvl(comm,0) desc; //함수 nvl은 comm이 null이면 0을 넣어서 계산하도록 한것!
문6>직업이 세일즈맨인 사람을 조회하여 수당순으로 정렬하여 나타내시오.
SQL> select * from emp
2 where job='SALESMAN'
3 order by nvl(comm,0) desc;
SQL> select * from emp
2 where job='SALESMAN'
3 order by comm desc;
문7>emp테이블에서 입사일자가 1982년 1월 1일 이후에 입사한 사원의 정보를 사원번호, 성명, 담당업무, 급여,입사일자, 부서번호를 출력하라.
SQL> select empno 사원번호, ename 성명, job 담당업무, sal 급여, hiredate 입사일자, deptno 부서번호 from emp
2 where hiredate>='82/01/01';
문8>급여가 3000이상이고 5000이하인 사람이 아닌 자료를 조회하여 이름, 직업, 급여를 표시하시오.
SQL> select ename 이름, job 직업, sal 급여 from emp
2 where sal not between 3000 and 5000;
문9>이름에 L자가 포함되어 있지 않은 사람을 조회하여 이름과 직업을 표시하시오.
SQL> select ename 이름, job 직업 from emp
2 where ename not like '%L%';
문10>emp 테이블에서 사원번호가 7902,7788,7566인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일지를 출력하여라.
SQL> select ename, job, sal, hiredate from emp
2 where mgr in('7902','7788','7566');
ex2) 위의 문장을 or을 이용하여 작성하시오.
SQL> select ename, job, sal, hiredate from emp
2 where mgr='7902' or mgr='7788' or mgr='7566';
ex3)emp테이블에서 입사일자가 82년도에 입사한 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자,부서번호를 출력하여라.
SQL> select empno, ename, job, sal, hiredate, deptno from emp
2 where hiredate>='82/01/01' and hiredate<='82/12/31';
SQL> select empno, ename, job, sal, hiredate, deptno from emp
2 where hiredate like '82%';
ex4)emp테이블에서 보너스가 null인 사원의 정보를 사원번호, 성명, 담당없무, 급여, 입사일자, 부서번호를
출력하여라.
SQL> select empno, ename, job, sal, hiredate, deptno from emp
2 where comm is null;
ex4)emp테이블에서 급여가 1100이상이고 job이 manager인 사원의 정보를 사원번호, 성명, 담당업무, 급여,
입사일자, 부서번호를 출력하여라.
SQL> select empno, ename, job, sal, hiredate, deptno from emp
2 where sal>=1100 and job='MANAGER';
ex5)emp테이블에서 job이 manager, clerk,analyst가 아닌 사원의 정보를 사원번호, 성명, 담당업무,
급여, 부서번호를 출력하여라.
SQL> select empno, ename, job, sal, deptno from emp
2 where job not in('JOB','MANAGER','CLERK','ANALYST'); //==where not job in('JOB','MANAGER','CLERK','ANALYST');
ex6)업무가 president이고 급여가 1500이상이거나 업무가 salesman인 사원의 정보를 사원번호, 이름, 업무,급여
를 출력하여라.
SQL> select empno, ename, job, sal from emp
2 where (job='PRESIDENT' and sal>=1500) or job='SALESMAN';
SQL> select empno, ename, job, sal from emp
2 where job='PRESIDENT' and sal>=1500 or job='SALESMAN';
EMPNO ENAME JOB SAL
---------- -------------------- ------------------ ----------
7499 ALLEN SALESMAN 1600
7521 WARD SALESMAN 1250
7654 MARTIN SALESMAN 1250
7839 KING PRESIDENT 5000
7844 TURNER SALESMAN 1500
ex7)업무가 PRESIDENT 또는 Salesman이고 급여가 1500이상인 사원의 정보를 사원번호, 이름, 업무, 급여를 출력하여라.
SQL> select empno, ename, job, sal from emp
2 where job='PRESIDENT' or job='SALESMAN' and sal>=1500;
*우선순위 : not -> and -> or 이므로 두가지 방법있음!!
SQL> select empno, ename, job, sal from emp
2 where (job='PRESIDENT' or job='SALESMAN') and sal>=1500;
SQL> select empno, ename, job, sal from emp
2 where job in('PRESIDENT','SALESMAN') and sal>=1500;
ex8)emp테이블에서 입사일자 순으로 정렬하여 사원번호, 이름, 업무, 급여, 입사일자 부서번호를 출력하시오.
SQL> select empno, ename, job, sal, hiredate, deptno from emp
2 order by hiredate asc;
ex9)emp테이블에서 가장 최근에 입사일자 순으로 정렬하여 사원번호, 이름, 업무, 급여, 입사일자 부서번호를 출력하시오.
SQL> select empno, ename, job, sal, hiredate, deptno from emp
2 order by hiredate desc;
ex10)emp테이블에서 부서번호로 정렬한 후 부서번호가 같을 경우 급여가 많은 순으로 정렬하여
사원번호, 성명, 업무, 부서번호, 급여를 출력하시오.
SQL> select empno, ename, job, deptno, sal from emp
2 order by deptno, sal desc;
[연습문제2]
문1>
SQL> select empno, ename, job, sal from emp
2 where sal>=3000;
문2>
SQL> select ename, deptno from emp
2 where empno=7788;
문3>
SQL> select ename,job,hiredate from emp
2 where hiredate between '81/02/23' and '81/05/01'
3 order by hiredate desc;
문4>
SQL> select * from emp
2 where deptno in(10,20)
3 order by ename desc;
문5>
SQL> select ename Employee, sal "Monthly Salary" from emp //alias공백이 있을 시 " "잊지마!
2 where sal>=1500 and deptno in (10,30);
EMPLOYEE Monthly Salary
-------------------- --------------
ALLEN 1600
BLAKE 2850
CLARK 2450
KING 5000
TURNER 1500
문6>
SQL> select * from emp
2 where hiredate like '82%';
문7>
SQL> select * from emp
2 where comm is not null;
문8>
SQL> select ename, sal, comm from emp
2 where comm>=sal*0.1;
문9>
SQL> select * from emp
2 where job in('CLERK', 'ANALYST') and sal not in(1000, 3000, 5000);
문10>
SQL> select * from emp
2 where ename='%L%L%' and deptno=30 or mgr=7782;
[연습문제3]
1. 입사년도가 81년인 사람들의 목록을 보이시오.
SQL> select * from emp
2 where hiredate like '81%';
2. 직업군이 salesman, clerk, manager인 사람의 자료를 조회하시오.
SQL> select * from emp
2 where job in('SALESMAN','CLERK','MANAGER');
3. 부서번호를 조회하여 중복없이 나타내시오.
SQL> select distinct deptno from emp;
4. 월급여를 이용하여 연봉을 구하고 연봉의 10%를 세금으로 제한 실수령액을 나타내시오.
단, heading은 실수령액으로 표현하고 금액앞에 $를 표시하시오.
SQL> select ename 이름, '$'||sal*12 연봉, '$'||sal*12*0.1 세금,
2 '$'||(sal*12-sal*12*0.1) 실수령액 from emp;
5.월급여가 3000~5000인 자료를 조회하여 급여가 많은순으로 나태내시오.
SQL> select * from emp
2 where sal between 3000 and 5000
3 order by sal desc;
'DB(SQL)' 카테고리의 다른 글
[SQL] 함수 연습2 (0) | 2017.02.28 |
---|---|
[SQL] 함수 연습1 (0) | 2017.02.28 |
[SQL] SQL 연습1 (0) | 2017.02.28 |
[SQL] 권한 관리 (0) | 2017.02.28 |
[SQL] 사용자 생성/권한부여/삭제 (0) | 2017.02.28 |