포스팅 목차
* 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
[ TRUNC(number) Oracle Function ]
TRUNC(NUMBER) 함수는 인수 n1을 소수점 자리 파라미터 n2 미만을 절삭(버림)한다. 만약 인수 n2를 지정하는 않는 경우, 인수 n1의 소수점 이하를 절삭한다. 만약 인수 n2가 음수인 경우는, 소수점 왼쪽의 n2자리(정수 부분)에서 절삭한다.
- 함수 설명 : TRIM 오라클 함수 링크
1. Oracle(오라클)
Trunc() 함수
- 소수점 첫째 자리에서 절삭(버림)하여 정수 345를 반환한다.
- 소수점 둘째 자리 미만을 절삭(버림)하여 345.67을 반환한다.
- 정수부 일의 자리에서 절삭(버림)하여 340을 반환한다.
Oracle Programming |
SELECT TRUNC(345.678), TRUNC(345.678, 2), TRUNC(345.678, -1)
FROM DUAL;
Results |
TRUNC(345.678) TRUNC(345.678,2) TRUNC(345.678,-1)
--------------------------------------------------------
345 345.67 340
2. Python Pandas(파이썬)
math.trunc() 함수
Python Programming |
import math
math.trunc(345.678)
Results |
345
math.trunc() 함수
Python Programming |
import math
math.trunc(345.678 * 10.0 ** 2) / 10.0 ** 2
Results |
345.67
math.floor() 함수
Python Programming |
math.floor(345.678*100)/100
Results |
345.67
round() 함수
Python Programming |
str(round(345.678, 2))
Results |
'345.68'
format()
Python Programming |
"{0:.2f}".format(345.678)
Results |
'345.68'
3. R Programming (R Package)
trunc() 함수
R Programming |
%%R
trunc(345.678)
Results |
[1] 345
trunc() 함수
R Programming |
%%R
trunc(345.678 * 10.0 ** 2) / 10.0 ** 2
Results |
[1] 345.67
floor() 함수
R Programming |
%%R
sign(345.678) * floor(abs(345.678) * 100) / 100
Results |
[1] 345.67
4. R Dplyr Package
trunc() 함수와 floor() 함수
사원의 급여를 정수부 십의 자리에서 절삭(버림)하여 반환한다.
R Programming |
%%R
emp %>%
dplyr::mutate( trunc_sal = trunc(sal * 10.0 ** - 2) / 10.0 ** - 2 ,
floor_sal = floor(sal * 10.0 ** - 2) / 10.0 ** - 2 ) %>%
head()
Results |
# A tibble: 6 x 10
empno ename job mgr hiredate sal comm deptno trunc_sal floor_sal
<dbl> <chr> <chr> <dbl> <date> <dbl> <dbl> <dbl> <dbl> <dbl>
1 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 800 800
2 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 1600 1600
3 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 1200 1200
4 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 2900 2900
5 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 1200 1200
6 7698 BLAKE MANAGER 7839 1981-03-01 2850 NA 30 2800 2800
5. R sqldf Package
printf() 함수와 round() 함수
R Programming |
%%R
sqldf(" SELECT printf('%d',345.678) trunc_1,
printf('%2f',345.678) trunc_2,
CAST(ROUND(345.678, 2) AS NUMERIC(36,2)) round_1,
round(345.678 - 0.01/2, 2) round_2")
Results |
trunc_1 trunc_2 round_1 round_2
1 345 345.678000 345.68 345.67
6. Python pandasql Package
printf() 함수와 round() 함수
Python Programming |
ps.sqldf(" SELECT printf('%d',345.678) trunc_1, \
printf('%2f',345.678) trunc_2, \
CAST(ROUND(345.678, 2) AS NUMERIC(36,2)) round_1,\
round(345.678 - 0.01/2, 2) round_2 ")
Results |
trunc_1 trunc_2 round_1 round_2
0 345 345.678000 345.68 345.67
7. R data.table Package
trunc() 함수와 floor() 함수
사원의 급여를 정수부 십의 자리에서 절삭(버림)하여 반환한다.
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
DT[, `:=` ( trunc_sal = trunc(sal * 10.0 ** - 2) / 10.0 ** - 2 ,
floor_sal = floor(sal * 10.0 ** - 2) / 10.0 ** - 2 )][1:10, ]
Results |
empno ename job mgr hiredate sal comm deptno trunc_sal floor_sal
1: 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 800 800
2: 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 1600 1600
3: 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 1200 1200
4: 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 2900 2900
5: 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 1200 1200
6: 7698 BLAKE MANAGER 7839 1981-03-01 2850 NA 30 2800 2800
7: 7782 CLARK MANAGER 7839 1981-01-09 2450 NA 10 2400 2400
8: 7788 SCOTT ANALYST 7566 1982-12-09 3000 NA 20 3000 3000
9: 7839 KING PRESIDENT NA 1981-11-17 5000 NA 10 5000 5000
10: 7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30 1500 1500
8. Python Duckdb의 SQL
Round() 함수
Python Programming |
%%sql
SELECT cast(round(345.678, 2) as NUMERIC(36,2)) TRUNC_NUM_1,
round(345.678 - 0.01/2, 2) TRUNC_NUM_2
Python Programming |
duckdb.sql(" SELECT cast(round(345.678, 2) as NUMERIC(36,2)) TRUNC_NUM_1, \
round(345.678 - 0.01/2, 2) TRUNC_NUM_2 ").df()
Results |
TRUNC_NUM_1 TRUNC_NUM_2
0 345.68 345.67
--------------------------------------------
[Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table] 오라클 함수와 R & Python 비교 사전 목록 링크 |
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 링크 |
반응형
댓글