본문 바로가기
통계프로그램 비교 시리즈/오라클함수 비교(R & Python)

TRUNC(number) 오라클 함수 [Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table, DuckDB]

by 기서무나구물 2021. 12. 28.

포스팅 목차

    * 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크


    [ TRUNC(number) Oracle Function ]

     


    TRUNC(NUMBER) 함수는 인수 n1을 소수점 자리 파라미터 n2 미만을 절삭(버림)한다. 만약 인수 n2를 지정하는 않는 경우, 인수 n1의 소수점 이하를 절삭한다. 만약 인수 n2가 음수인 경우는, 소수점 왼쪽의 n2자리(정수 부분)에서 절삭한다.

     

     


    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

     


    &nbsp;Everything you need (https://unsplash.com/photos/9OKGEVJiTKk)

      --------------------------------------------  

     

     

    [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 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 링크
    반응형

    댓글