본문 바로가기
DB/SQL(오라클)

오라클(SQL)숫자형 함수

by redbear0077 2021. 3. 12.
반응형

숫자형 함수

테이블 다운로드

 

 .수학적 함수(ABS,SIGN,POWER,SQRT,..등)
 .ABS(N) : N의 절대값
 .SIGN(N): N의 부호(음수 :-1, 양수 : 1, 0: 0)
 .POWER(N,E) : N의 E승 값 반환
 .SQRT(N) : N의 평방근(ROOT 값)

사용예)

 SELECT ABS(-100),
        ABS(0.000001),
        SIGN(10000000),
        SIGN(-10000000),
        SIGN(0.0000001),
        SIGN(-0.0000001),
        SIGN(0),
        POWER(2,10),
        SQRT(1024)
   FROM DUAL;

GREATEST, LEAST
    .주어진 자료 중 최대값과 최소값을 구함
(사용형식)
    GREATEST(N1,N2,......) : N1,N2,......중 최대값 반환
    LEAST(N1,N2,.....) : N1,N2,......중 최소값 반환
사용 예)

SELECT GREATEST(20,40,5,70),LEAST(20,40,5,70) FROM DUAL;

예)회원테이블에서 회원들이 보유한 마일리지를 조회하여
  1000미만인 회원들의 마일리지를 1000으로 반드시오.
  ALIAS는 회원번호, 회원명, 보유 마일리지, 수정 마일리지

SELECT MEM_ID AS 회원번호,
       MEM_NAME AS 회원명,
       MEM_MILEAGE AS "보유 마일리지",
       GREATEST(MEM_MILEAGE, 1000) AS "수정 마이리지"
       --컬럼 별칭에 글자이외의 것이 들어가면 ""를 써줘야한다.
  FROM MEMBER;

**회원테이블에서 최대마일리지를 구하시오

SELECT B.MEM_NAME AS 회원명,
       A.MILE_MAX AS 마일리지
  FROM (SELECT MAX(MEM_MILEAGE) AS MILE_MAX
          FROM MEMBER) A, MEMBER B
 WHERE A.MILE_MAX=B.MEM_MILEAGE;

.ROUND, TRUNC
    .주어지 숫자자료를 반올림(ROUND)또는 자리버림(TRUNC)연산후
     결과값 반환
(사용형식)

    ROUND(N,I) : -I가 양수이면 주어진 자료 N에서 소숫점 이하 I+1번째
                      자리에서 반올림하여 I번째 수까지 반환
                      -I가 음수이면 주어진 자료 N에서 정수부의 I번째 자리에서
                      반올림하여 결과 반환
                      -I를 생략하면 0으로 간주
    TRUNC(N,I) : -I가 양수이면 주어진 자료 N에서 소숫점 이하 I+1번째
                      자리에서 반올림하여 I번째 수까지 반환
                      -I가 음수이면 주어진 자료 N에서 정수부의 I번째 자리에서
                      자리버림하여 결과 반환
                      -I를 생략하면 0으로 간주

UPDATE EMPLOYEES
   SET SALARY=SALARY+SALARY*0.17;

예)사원테이블의 자료를 이용하여 이번달 급여를 조회하시오
  .이번달에 보너스를 지급 : 보너스=급여의 13%
  지급액=본봉+보너스
  ALIAS는 사원번호, 사원명, 본봉, 보너스, 지급액
  단 보너스 및 지급액은 소수 첫 자리까지 나타내시오(2번재 자리에서 반올림)
  단 보너스 및 지급액은 일의 자리에서 반올림(2번재 자리에서 반올림)

SELECT EMPLOYEE_ID AS 사원번호, 
       EMP_NAME AS 사원명, 
       SALARY AS 본봉, 
       SALARY * 0.13 AS 보너스1, 
--       ROUND(SALARY * 0.13,1) AS 보너스2, 
       ROUND(SALARY * 0.13,-1) AS 보너스2, 
--       ROUND(SALARY+(SALARY * 0.13)-1 AS 지급액1,
       ROUND(SALARY,-1)+ROUND(SALARY * 0.13,-1) AS 지급액2
  FROM EMPLOYEES;

TRUNC 예)

SELECT EMPLOYEE_ID AS 사원번호, 
       EMP_NAME AS 사원명, 
       SALARY AS 본봉, 
       SALARY * 0.13 AS 보너스1, 
--       ROUND(SALARY * 0.13,1) AS 보너스2, 
       TRUNC(SALARY * 0.13,-1) AS 보너스2, 
--       ROUND(SALARY+(SALARY * 0.13)-1 AS 지급액1,
       TRUNC(SALARY,-1)+ROUND(SALARY * 0.13,-1) AS 지급액2
  FROM EMPLOYEES;
반응형