Puter의 잡동사니

100을 30으로 나눴을 때 나머지를 구하시오.
1
select mod(10030from dual;
cs

23000을 0으로 고정하여 표현.
1
2
select to_char(23000, ‘000,000,000’)
from dual;
cs

23000을 유동적으로 표현.
1
2
select to_char(23000'999,999')
from dual;
cs

23000을 고정적으로 표현.
1
2
select to_char(23000'000,000')
from dual;
cs

23000을 $를 붙이고 유동적으로 표현.
1
2
select to_char(23000'$999,999')
from dual;
cs

comm값과 comm 널값을 0으로 변환 후 100 더한 값을 출력하시오.
1
2
select comm, nvl(comm, 0+100 as new_comm
from emp;
cs

<조건문 : DECODE>
analyst면  A로, clerk면 C로 manager면 M으로 그외는 O로 표현하시오.
1
2
3
4
5
6
select job,
       decode(job, 'ANALYST''A',
                   'CLERK',   'C',
                   'MANAGER''M',
                              'O') as "Naming"
from emp;
cs

부서번호가 10이면 영업부, 20이면 개발부, 30이면 홍보부, 그 외는 미정으로 출력하시오.
1
2
3
4
5
6
select ename, deptno, 
       decode(deptno, 10'영업부',
                      20'개발부',
                      30'홍보부',
                          '미정') as "부서"
from emp;
cs

<조건문 :  case when then>
부서번호가 10이면 영업부, 20이면 개발부, 30이면 홍보부, 그 외는 미정으로 출력하시오.
1
2
3
4
5
6
7
8
select ename, deptno,
       case 
           WHEN deptno=10 then '영업부',
           WHEN deptno=20 then '개발부',
           WHEN deptno=30 then '홍보부',
                  else '미정'
       end NEW 
from emp;
cs

<join>
사원번호/사원이름/부서번호/부서이름을 출력하시오.
1
2
3
select e.empno , e.ename, d.deptno, d.dname
from emp e, dept d
where e.deptno = d.deptno;
cs

<inner join>
사원번호/사원이름/부서번호/부서이름을 출력하시오.
1
2
3
select e.empno , e.ename, d.deptno, d.dname
from emp e inner join dept d
on e.deptno = d.deptno;
cs

<join>
부서번호가 10인 사원번호/사원이름/부서번호/부서이름을 출력하시오.
1
2
3
4
select e.empno, e.ename, d.deptno, d.dname
from emp e, dept d
where e.deptno = d.deptno
      and d.deptno=10;
cs

<inner join>
부서번호가 10인 사원번호/사원이름/부서번호/부서이름을 출력하시오.
1
2
3
4
select e.empno, e.ename, d.deptno, d.dname
from emp e inner join dept d
on e.deptno = d.deptno
where d.deptno=10;
cs

<outer join>
사원이름/부서번호/부서이름을 출력하시오
1
2
3
select e.ename, d.deptno, d.dname
from emp e, dept d
where e.deptno(+= d.deptno;
cs

1
2
3
4
select e.ename, d.deptno, d.dname
from emp e right outer join dept d
     -- 더 큰걸 기준
     on e.deptno = d.deptno;
cs

<outer join을 명시 - from T1 outer join T2 on 조건>
사원번호/사원이름/부서번호/부서이름/보너스를 출력하시오.
1
2
3
4
5
6
select e.empno, e.ename, d.deptno, d.dname, b.bonus
from emp e 
    right outer join dept d 
        on e.deptno = d.deptno
    left outer join bonus b 
        on e.empno = b.empno;
cs

<(+)를 이용하여 outer join 표현>
1
2
3
4
5
6
select e.empno, e.ename, d.deptno, d.dname, b.bonus
from emp e, dept d, bonus b
where e.deptno(+= d.deptno
      and e.empno = b.empno(+)
      -- 모자른 쪽에 (+)를 주자.
order by deptno;
cs

bonus 테이블 변경
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
alter table bonus drop(ename);
alter table bonus drop(job);
alter table bonus drop(comm);
 
alter table bonus add(empno number(4));
 
alter table bonus rename column sal to bonus;
 
insert
into bonus(empno, bonus)
values(7369300);
 
insert
into bonus(empno, bonus)
values(7499100);
cs

모든 사원의 사원번호/사원이름/사수번호/사수이름을 출력하시오.
1
2
3
select e1.empno, e1.ename, e2.empno as mgrno, e2.ename as mgrname
from emp e1, emp e2
where e1.mgr = e2.empno(+);
cs

1
2
3
select e1.empno, e1.ename, e2.empno as mgrno, e2.ename as mgrname
from emp e1 left outer join emp e2
     on e1.mgr = e2.empno;
cs

JONES의 급여보다 많이 받는 사원이름/급여를 출력하시오.
1
2
3
4
5
select ename, sal
from emp
where sal > (select sal
             from emp
             where ename = 'JONES');
cs

직업이 PRESIDENT인 사원과 같은 부서에서 일하는 사원정보를 출력하시오.
1
2
3
4
5
select *
from emp
where deptno = (select deptno
                from emp
                where job ='PRESIDENT');
cs

부서번호가 JAMES와 같거나 급여가 JONES보다 많이 받는 사원을 출력하시오.
1
2
3
4
5
6
7
8
select *
from emp
where deptno = (select deptno
                from emp
                where ename = 'JAMES')
or sal > (select sal
          from emp
          where ename = 'JONES');
cs

그룹함수 사용
1
2
select min(sal), max(sal), avg(sal), sum(sal), count(sal)
from emp;
cs

최소 급여를 받는 사원과 같은 부서에서 일하는 사원을 출력하시오.
1
2
3
4
5
6
select *
from emp
where deptno = (select deptno
                from emp
                where sal = (select min(sal) 
                             from emp));
cs

직업이 PRESIDENT이거나 SALESMAN인 사원과 같은 부서에서 일하는 사원을 출력하시오.
1
2
3
4
5
select *
from emp
where deptno in (select deptno
                 from emp 
                 where job in ('PRESIDENT''SALESMAN'));
cs
                 
JONES의 급여보다 많이 받는 사원이름/급여/부서명을 출력하시오.
1
2
3
4
5
6
select e.ename, e.sal, d.dname
from emp e, dept d
where e.deptno = d.deptno
      and e.sal > (select sal
                   from emp
                   where ename ='JONES');
cs

1
2
3
4
5
6
select e.ename, e.sal, d.dname
from emp e inner join dept d
on e.deptno = d.deptno
where e.sal > (select sal
               from emp
               where ename ='JONES');
cs




'개 발 :: development > 질의문 :: sql' 카테고리의 다른 글

SQL 04 테이블/시퀀스/인덱스  (0) 2017.12.27
SQL 03 그룹함수  (0) 2017.12.27
SQL 02 조건문/조인/그룹함수  (0) 2017.12.27
SQL 01 기초  (0) 2017.12.27
댓글 로드 중…

블로그 정보

잡다한 것이 한데 뒤섞인 곳

최근에 게시된 글