반응형
안녕들 하시죠!
이번 시간에도 '사내 DB테이블'을 이용한 문제풀이를 통해 ORACLE SQL 쿼리문을 복습해보겠습니다.
언어 및 툴
ORACLE DATABASE, SQLDEVELOPER
테이블 생성 참고
2019/09/28 - [Database] - ORACLE SQL 쿼리 복습을 위한 '사내 DB테이블' 세팅
쿼리 실행 순서
5 SELECT
1 FROM
2 WHERE
3 GROUP BY
4 HAVING
6 ORDER BY
문제
1. 직책이 SALESMAN, ANALYST인 사람의 모든 정보를 출력하시오. ( or, like, in, any, some )
1
2
3
4
|
select *
from emp
where job = 'SALESMAN'
or job = 'ANALYST';
|
cs |
1
2
3
4
|
select *
from emp
where job like 'S%'
or job like 'A%';
|
cs |
1
2
3
4
5
6
7
8
9
10
11
|
select *
from emp
where job in ('SALESMAN', 'ANALYST');
select *
from emp
where job = any ('SALESMAN', 'ANALYST');
select *
from emp
where job = some ('SALESMAN', 'ANALYST');
|
cs |
2. 1981년 5월 1일 ~ 1982년 2월 사이에 입사한 사원들의 모든 정보를 부서번호순(오름차순)으로 검색하시오. ( TO_DATE )
1
2
3
4
5
|
select *
from emp
where hiredate >= TO_DATE('19810501', 'yyyymmdd')
and hiredate < TO_DATE('19820228', 'yyyymmdd')
order by deptno;
|
cs |
3. 1981년에 입사한 사원의 이름과 사원번호를 출력하는데 사원번호가 내림차순으로 정렬하시오. ( TO_CHAR )
1
2
3
4
5
6
|
select ename
, empno
from emp
where hiredate >= '19810101'
and hiredate <= '19811231'
order by empno desc;
|
cs |
1
2
3
4
5
|
select ename
, empno
from emp
where to_char(hiredate,'YYYY') = '1981'
order by empno desc;
|
cs |
4. 직급이 SALESMAN 일 경우 급여 * 1.1, CLERK 일 경우 급여 * 1.3, MANAGER 일 경우 급여 * 1.5 를 하고 모든 정보를 출력하시오. ( DECODE )
DECODE 함수 = ( IF-ELSE )
ex) DECODE(컬럼, 조건1, 결과1, 조건2, 결과2....)
1
2
3
4
5
6
7
|
select empno
, job
, ename
, sal
, decode(job, 'SALESMAN', sal*1.1, 'CLERK', sal*1.3, 'MANAGER', sal*1.5, sal) as 인상된급여
from emp;
|
cs |
5. 모든 사원들에게 커미션을 200씩 추가하여 사원이름, 커미션 값을 출력하시오. ( nvl )
NVL 함수 = 값이 NULL인 경우 지정값을 출력한다. NVL("값", "지정값")
NVL2 함수 = 값이 NULL이 아닌 경우 지정값1을 출력하고 NULL인 경우 지정값2를 출력한다. NVL2("값", "지정값1", "지정값2")
1
2
3
|
select ename
, nvl(comm,0) + 200
from emp;
|
cs |
6. 커미션을 가지고 있는 사원은 Y, 커미션이 NULL값인 사원은 N을 포함하여 사원이름과 커미션 값을 출력하시오.( nvl2 )
1
2
3
|
select ename
, nvl2(comm, 'Y', 'N')
from emp;
|
cs |
7. 1981년 입사자들의 평균 임금을 출력하시오.
1
2
3
|
select AVG(sal)
from emp
where TO_CHAR(hiredate,'YYYY') = '1981';
|
cs |
8. 사원번호, 사원이름, 총 급여(SAL+COMM)을 출력하시오.
1
2
3
4
|
select empno
, ename
, sal+nvl(comm,0)
from emp;
|
cs |
9. SALESMAN 의 커미션 평균을 출력하시오. ( group by )
GROUP BY 함수 = 특정 컬럼을 기준으로 집계를 내는데에 사용한다.
SELECT [그룹으로 묶은 컬럼명]
, [집계할 컬럼명]
FROM [테이블명]
GROUP BY [그룹으로 묶을 컬럼명]
1
2
3
4
5
|
select job
, AVG(nvl(comm,0))
from emp
where job='SALESMAN'
group by job;
|
cs |
오늘은 여기까지입니다 감사합니다 !
'Database' 카테고리의 다른 글
ORACLE SQL 쿼리문 문제풀이 -- 3 ( JOIN ) (0) | 2019.09.30 |
---|---|
ORACLE SQL 쿼리문 문제풀이 -- 1 ( SELECT, FROM, WHERE, ORDER BY ) (0) | 2019.09.29 |
ORACLE SQL 쿼리 복습을 위한 '사내 DB테이블' 세팅 (0) | 2019.09.28 |
오라클 11g 설치 (0) | 2019.05.28 |