샘플 스키마 : HR

설명하는 과정에서 예제로 주어진 문장은 눈으로 보지만 말고 직접 실행시켜 보길 권한다.




No. 01

 

 

숫자 함수


슷자 함수는 숫자를 인자로 사용하고 결과 값도 숫자를 반환하는 함수이다.


숫자 함수

함수명

기 능

사 용

ROUND

 m을 n 자리까지 반올림한다.

 ROUND(m, n) 

 ROUND(45.926, 2) → 45.93

 

TRUNC

 m을 n 자리 미만을 버린한다.

 TRUNC(m, n) 

 TRUNC(45.926, 2)  → 45.9

 

MOD

 m을 n으로 나눈 나머지를 계산한다. 

 MOD(m, n) 

 MOD(1600, 300) → 100

 

CEIL

 n보다 큰 가장 작은 정수를 찾는다.

 CEIL(n) 

 CEIL(12.34) → 13

 

FLOOR

 n보다 작은 가장 큰 정수를 찾는다. 

 FLOOR(n) 

 FLOOR(12.34) → 12

 

POWER

 m의 n승을 계산한다. 

 POWER(m, n) 

 POWER(2, 3) → 8

 

ABS

 n의 절대 값을 계산한다. 

 ABS(n) 

 ABS(-3) → 3

 

SQRT

 n의 제곱근을 계산한다. 

 SQRT(n) 

 SQRT(4) → 2

 

SIGN

 n이 음수일 때 -1, 양수일 때 1,

 0일 때 0을 반환한다. 

 SIGN(n)

 SIGN(-5) → -1


◈ 예제

▶ ROUND

select round(45.923, 2), round(45.923, 0), round(45.923, -1)

from dual;


round 함수의 자리수(n)은 소수점을 기준으로 한다.

예) 1: 소수점 첫 째 자리, 0: 1의 자리(생략 가능), -1: 10의 자리, -2: 100의 자리 …


▶ TRUNC

select trunc(45.923, 2), trunc(45.923), trunc(45.923, -1)

from dual;


자리수(n)이 소수점을 기준으로하는 것은 round 함수와 같다.


▶ MOD

select first_name, salary, mod(salary, 4000)

from employees

where job_id = 'SA_REP';


▶ CEIL, FLOOR

select ceil(45.923), floor(45.923), ceil(-45.923), floor(-45.923)

from dual;




No. 02

 

 

날짜 함수


날짜 데이터는 문자처럼 표기 하지만 숫자처럼 계산되는 데이터이다.



날짜에 산술 연산을 하는 경우

 연 산

변환 되는 데이터 타입 

결 과 

 

 날짜 + 숫자

 날짜 

 일수 이후 날짜 

 

 날짜 - 숫자

 날짜 

 일수 이전 날짜 

 

 날짜 + 숫자/24

 날짜 

 시간을 더한 날짜 

 

 날짜 - 날짜

 숫자 

 두 날짜 간에 차(일수) 

 


SYSDATE : 시스템의 현재 날짜 및 시간 반환



◈ 예제

select hire_date, hire_date + 3, hire_date -3

from employees;


select syadate, hire_date, sysdate-hire_date "날짜 차이"

from employees;


현재 날짜와 사원들의 고용일과의 날짜 차이이다.

날짜 차이가 소수점으로 나오는 이유는 눈에 보이지 않지만 시분초에 해당하는 데이터가 존재하기 때문이다.

시분초를 출력하는 방법은 변환 함수를 배울 때 알아보도록 한다.



▣ 날짜 함수


함수명

기능 & 사용 

ROUND

 형식에 맞추어 반올림한 날짜를 반환한다.

 YYYY : 년도

 MM : 월

 DD : 일

 HH : 시간

 MI : 분

 SS : 초

 ROUND(날짜, 형식)

 ROUND(sysdate, 'DD') → 2017/12/04

 

TRUNC

 형식에 맞추어 버림한 날짜를 반환한다.

 TRUNC(날짜, 형식)

 TRRUNC(sysdate, 'YYYY') → 2017/01/01

 

MONTHS_BETWEEN

 두 날짜간의 기간을 월 수로 계산한다.

 MONTHS_BETWEEN(날짜1, 날짜2)

 MONTHS_BETWEEN('2017/10/10', '2017/07/10') → 3

 

ADD_MONTHS

 날짜에 n 달을 더한 날짜를 계산한다.

 ADD_MONTHS(날짜, n)

 ADD_MONTHS('2017/07/10', 3) → 2017/10/10

 

NEXT_DAY

 날짜 이후 지정된 요일에 해당하는 날짜를 계산한다.

 NEXT_DAY(날짜, 요일),  요일 표현 : 'sun', '일요일', 1

 NEXT_DAY('2017/07/10', '토요일') → 2017/07/15

 

LAST_DAY

 날짜를 포함한 달의 마지막 날짜를 계산한다.

 LAST_DAY(날짜)

 LAST_DAY('2017/07/10') → 2017/07/31


◈ 예제

▶ ROUND

select hire_date, round(hire_date, 'YY') 년, round(hire_date, 'MM') 월, round(hire_date, 'DD') 일

from employees

where employee_id = 101;


▶ TRUNC

select hire_Date, trunc(hire_date, 'YY') 년, trunc(hire_date, 'MM') 월, truc(hire_date, 'DD') 일

from employees

where employee_id = 101;


▶ 사원 번호 101번인 사원의 일한 일수

select trunc(sysdate, 'DD') - trunc(hire_date, 'DD') + 1 day

from employees

where employee_id = 101;


오늘 날짜에서 입사일을 빼면 입사일은 근무 일수에서 빠지므로 마지막에 1을 더해준다.


▶ 부서번호 50번인 사원들의 근무 개월수

select employee_id, first_name, trunc(months_between(sysdate, hire_date)) 근무개월수

from employees

where department_id = 50;




+ Recent posts