샘플 스키마 : 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;
예) 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;
'SQL' 카테고리의 다른 글
[SQL 09] 단일 행 함수 - 일반 함수 & 조건 표현식(CASE, DECODE) (0) | 2017.12.03 |
---|---|
[SQL 08] 단일 행 함수 - 변환 함수 (0) | 2017.12.03 |
[SQL 06] 단일 행 함수 - 문자 함수 (0) | 2017.12.03 |
[SQL 05] ORDER BY 절 (0) | 2017.12.03 |
[SQL 04] WHERE 절 (0) | 2017.12.03 |