연습문제 : 3장 기본적인 SELECT문



<<1>>  부서 번호가 10번인 부서의 사람 중 사원번호, 이름, 급여를 출력하라.
SQL> select empno, ename, sal
     from emp
     where deptno = 10;                                        

<<2>>  사원번호가 7639인 사람 중 이름, 입사일자, 부서번호를 출력하라.
SQL> select ename, hiredate, deptno
     from emp
     where empno = '7369';                                              

<<3>>  이름이 ALLEN인 사람의 모든 정보를 출력하라.
SQL> select *
     from emp
     where ename = 'ALLEN';
 
<<4>>  입사일자가 83/01/12인 사원의 이름, 부서 번호, 급여를 출력하라.
SQL> select ename, deptno, sal
     from emp
     where hiredate = '83/01/12';

SQL> select ename, deptno, sal
     from emp
     where hiredate = to_date('1983/01/12', 'yyyy/mm/dd'>> ;


<<5>>  직업이 MANAGER가 아닌 사람의 모든 정보를 출력하라.
SQL> select *
     from emp
     where job != 'MANAGER';


<<6>>  입사일자가 81/04/02 이후에 입사한 사원의 정보를 출력하라.
SQL> select *
     from emp
     where hiredate >= '81/04/02';

<<7>>  급여가 $800이상인 사람의 이름, 급여, 부서 번호를 출력하라.
SQL> select ename, sal, deptno
     from emp
     where sal >= 800;

<<8>>  부서번호가 20번 이상인 사원의 모든 정보를 출력하라.
SQL> select   *
     from     emp
     where   deptno >= 20;

<<9>>  성명이 K로 시작하는 사람보다 높은 이름을 가진 사람의 모든 정보를 출력하라.
SQL> select *
     from emp
     where ename >= 'L%';

    
<<10>>  입사일자가 81/12/09 보다 먼저 입사한 사람들의 모든 정보를 출력하라.
SQL> select *
     from emp
     where hiredate < '81/12/09';


<<11>>  입사번호가 7698 보다 작거나 같은 사람들의 입사번호와 이름을 출력하라.
SQL> select empno, ename
     from emp
     where empno <= 7698;

<<12>>  입사일자가 81/04/02 보다 늦고 82/12/09 보다 빠른 사원의 이름, 월급, 부서 번호를 출력하라.
SQL> select ename, sal, deptno
     from emp
     where hiredate > '81/04/02'
      and hiredate < '82/12/09';

<<13>>  급여가 1,600 보다 크고 $3,000보다 작은 사람은 이름, 직무, 급여를 출력하라.
SQL> select ename, job, sal
     from emp
     where sal > 1600
      and sal < 3000;

<<14>>  사원번호가 7654와 7782 사이 이외의 사원의 모든 정보를 출력하라.
SQL> select *
     from emp
     where not empno between 7654 and 7782;


<<15>> 이름이 B와 J 사이의 모든 사원의 정보를 출력하라.
SQL> select *
     from emp
     where ename between 'B%' and 'K%';


<<16>>  입사일자가 81년 이외에 입사한 사람의 모든 정보를 출력하라.
SQL> select *
     from emp
     where hiredate not like '81%';
 
SQL> select *
     from emp
     where to_char(hiredate, 'yy/mm/dd'>>  not like '81%';

 
<<17>>  직무가 MANAGER와 SALESMAN인 사람의 모든 정보를 출력하라.
SQL> select *
     from emp
     where job in ('MANAGER', 'SALESMAN'>> ;

<<18>>  부서 번호와 20,30번을 제외한 모든 사람의 이름, 사원번호, 부서 번호를 출력하라.
SQL> select ename, empno, deptno
     from emp
     where not deptno in (20, 30>> ;

<<19>>  이름이 S로 시작하는 사원의 사원번호, 이름, 입사일자, 부서번호를 출력하라.
SQL> select empno, ename, hiredate, deptno
     from emp
     where ename like 'S%';

<<20>>  입사일자가 81년도인 사람의 모든 정보를 출력하라.
SQL> select *
     from emp
     where to_char(hiredate, 'yy/mm/dd'>>  like '81%';

<<21>>  이름 중 S자가 들어가 있는 사람만 모든 정보를 출력하라.
SQL> select *
     from emp
     where ename like '%S%';


<<22>>  이름이 S로 시작하고 마지막 글자가 T인 사람의 모든 정보를 출력하라 (단, 이름은 전체 5자리이다.>>
SQL> select *
     from emp
     where ename like 'S___T';
                     

<<23>>  첫 번째 문자는 관계없고 두 번째 문자가 A인 사람의 정보를 출력하라.
SQL> select *
     from emp
     where ename like '_A%';

    
<<24>>  커미션이 NULL인 사람의 정보를 출력하라.
SQL> select *
     from emp
     where comm is null;

<<25>>  커미션이 NULL이 아닌 사람의 모든 정보를 출력하라.
SQL> select *
     from emp
     where comm is not null;

<<26>>  부서가 30번 부서이고 급여가 $1,500 이상인 사람의 이름, 부서, 월급을 출력하라.
SQL> select ename, deptno, sal
     from emp
     where deptno = 30
      and sal >= 1500;

<<27>>  이름의 첫 글자가 K로 시작하거나 부서 번호가 30인 사람의 사원번호, 이름, 부서 번호를 출력하라.
SQL> select empno, ename, deptno
     from emp
     where ename like 'K%'
       or deptno = 30;

<<28>>  급여가 $1,500이상이고 부서 번호가 30번인 사워 중 직업이 MANAGER인 사람의 정보를 출력하라.
SQL> select *
     from emp
     where sal >= 1500
      and deptno = 30
      and job = 'MANAGER';


<<29>>  부서 번호가 30인 사람 중 사원번호를 SORT 하라.
SQL> select *
     from emp
     where deptno = 30
     order by empno;

  
<<30>>  급여가 많은 순으로 SORT하라.
SQL> select *
     from emp
     order by sal desc;

<<31>>  부서 번호로 ASCENDING SORT한 후 급여가 많은 사람 순으로 출력하라.
SQL> select *
     from emp
     order by deptno asc, sal desc;

<<32>>  부서 번호로 DESCENDING NSORT하고 이름 순으로 ASCENDING SORT, 급여 순으로 DESCENDING SORT하라.
SQL> select *
     from emp
     order by deptno desc, ename asc, sal desc;



연습문제 : 6장 조인과 서브 쿼리

<<1>> EMP와 DEPT TABLE을 JOIN하여 부서 번호, 부서명, 이름, 급여를 출력하라.
SQL> select e.deptno, d.dname, e.ename, e.sal
 from emp e, dept d
 where e.deptno = d.deptno;

SQL> select deptno, dname, ename, sal
 from emp natural join dept;

<<2>> 이름이 'ALLEN'인 사원의 부서명을 출력하라.
SQL> select dname
 from emp e, dept d
 where e.deptno = d.deptno
      and e.ename = 'ALLEN';

SQL> select d.dname
 from emp e join dept d
 on e.ename = 'ALLEN' and e.deptno = d.deptno;

<<3>> EMP Table의 데이터를 출력하되 해당사원에 대한 상관번호와 상관의 성명을 함께 출력하라.
SQL> select e.ename, e.mgr, c.ename mgr_name
 from emp e, emp c
 where e.mgr = c.empno;

SQL> select e.ename, e.mgr, c.ename mgr_name
 from emp e join emp c
 on e.mgr = c.empno;

<<4>> DEPT Table 에는 존재하는 부서코드이지만 해당부서에 근무하는 사람이 존재하지 않는 경우의 결과를 출력하라.
SQL> select *
 from dept
 where deptno not in (
                  select deptno
                  from emp
                  group by deptno
                  having count(*) > 0)
 ;
                 
<<5>> 'ALLEN'의 직무와 같은 사람의 이름, 부서명, 급여, 직무를 출력하라.
SQL> select e.ename, d.dname, e.sal, e.job
 from emp e, dept d
 where e.deptno = d.deptno
  and e.job = (select job from emp where ename = 'ALLEN')
 ;



<<6>> 'JONES'가 속해있는 부서의 모든 사람의 사원번호, 이름, 입사일자, 급여를 출력하라.
SQL> select e.empno, e.ename, e.hiredate, e.sal
 from emp e
 where e.deptno = (select deptno from emp where ename = 'JONES');
        
        
<<7>> 전체 사원의 평균 임금보다 많은 사원의 사우너번호, 이름, 부서명, 입사일, 지역, 급여를 출력하라.

SQL> select e.empno, e.ename, d.dname, e.hiredate, d.loc, e.sal
 from emp e join dept d
 on e.deptno = d.deptno
 and e.sal > (select avg(sal) from emp );

<<8>> 10번 부서 사람들 중에서 20번 부서의 사원과 같은 업무를 하는 사원의 사원번호, 이름, 부서명, 입사일, 지역을 출력하라.
SQL> select e.empno, e.ename, d.dname, e.hiredate, d.loc
 from emp e, dept d
 where e.deptno = d.deptno
and e.job in (select job from emp where deptno = 20 );

<<9>> 10번 부서 중에서 30번 부서에는 없는 업무를 하는 사원의 사원번호, 이름, 부서명, 입사일자, 지역을 출력하라.
SQL> select e.empno, e.ename, d.dname, e.hiredate, d.loc
 from emp e, dept d
 where e.deptno = d.deptno
 and e.job not in (select job from emp where deptno = 30);


<<10>> 10번 부서에 근무하는 사원의 사원번호, 이름, 부서명, 지역, 급여를 급여가 많은 순으로 출력하라.
SQL> select e.empno, e.ename, d.dname, d.loc, e.sal
 from emp e, dept d
 where e.deptno = d.deptno
 and e.deptno = 10;


<<11>> 'MARTIN'이나 'SCOTT'의 급여와 같은 사원의 사원번호, 이름, 급여를 출력하라.
SQL> select empno, ename, sal
 from emp
 where sal in ( select sal from emp where ename in ('MARTIN', 'SCOTT') );

<<12>> 급여가 30번 부서의 최고 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
SQL> select empno, ename, sal
 from emp
 where sal > (select max(sal) from emp where deptno = 30 );


<<13>> 급여가 30번 부서의 최저 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
SQL> select empno, ename, sal
 from emp
 where sal > (select min(sal) from emp where deptno = 30 );



'DB' 카테고리의 다른 글

[MySQL] 테이블 데이터 복사(컬럼값 변경 복사)  (0) 2021.01.11
2018.07.17 - SQL JOIN 조인  (0) 2018.07.17
MySql 내장함수 목록  (0) 2018.04.26
mysql 샘플 테이블 + 쿼리 연습 문제  (7) 2018.04.26
쿼리연습문제2  (0) 2018.04.26

+ Recent posts