본문 바로가기

db/oracle

oracle 퍼센트 구하기 함수

반응형

oracle 퍼센트 구하기 함수

요구사항
  • 1보다 작은 수, 소수점이 변수로 입력되지 않음
  • 퍼센트 계산 시 소수점 2자리까지 출력
  • 결과 값이 '%'문자 포함하여 리턴 처리
oracle 퍼센트 구하기 함수
  • 실행예제 : SELECT  FN_PERCENT(11,121) FROM DUAL;
create or replace NONEDITIONABLE FUNCTION FN_PERCENT(
    v_num1 NUMBER	-- 분자
    ,v_num2 NUMBER	-- 분모
) RETURN VARCHAR2 IS	-- VARCHAR2 리턴값
    v_result VARCHAR2(20);	-- 결과 저장 변수
BEGIN

    IF v_num1 < 1 OR v_num2 < 1 THEN
        v_result := '0%';
    ELSE
        v_result := ROUND( (ROUND(FLOOR(v_num1) / FLOOR(v_num2), 5) * 100), 2) || '%';
    END IF;

    RETURN v_result;
    
END FN_PERCENT;
함수 설명
  • FN_PERCENT 함수는 두 개의 숫자 (v_num1, v_num2)를 입력받아 백분율을 계산하고, 지정된 형식의 문자열로 반환하는 함수입니다.

1. 입력

  • v_num1 : 백분율 계산의 분자 (첫 번째 숫자)
  • v_num2 : 백분율 계산의 분모 (두 번째 숫자)

2. 반환

  • 백분율을 나타내는 문자열

3. v_result := ROUND( (ROUND(FLOOR(v_num1) / FLOOR(v_num2), 5) * 100), 2) || '%';

  • FLOOR(v_num1): v_num1의 소수점 이하를 버림 (정수 부분만 취함)
  • FLOOR(v_num2): v_num2의 소수점 이하를 버림 (정수 부분만 취함)
  • FLOOR(v_num1) / FLOOR(v_num2): 정수 나눗셈 수행
  • ROUND(..., 5): 나눗셈 결과를 소수점 5번째 자리까지 반올림
  • ... * 100: 백분율 계산을 위해 100을 곱함
  • ROUND(..., 2): 백분율 결과를 소수점 2번째 자리까지 반올림
  • || '%': '%' 문자를 결과 문자열에 연결
FLOOR : 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환합니다 (소수점 이하 버림).

2025.02.08 - [db/oracle] - oracle floor 함수

 

oracle floor 함수

오라클 FLOOR 함수오라클 FLOOR 함수는 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환하는 함수입니다. 즉, 입력된 숫자의 소수점 이하 부분을 버리고 정수 부분만 취하는 함수라고 생각하면

st-d.tistory.com

ROUND : 숫자를 지정된 소수점 자릿수로 반올림합니다.

2025.02.09 - [db/oracle] - oracle round 함수

 

oracle round 함수

오라클 ROUND 함수오라클 ROUND 함수는 숫자를 지정된 자릿수로 반올림하는 데 사용되는 함수입니다.기본 사용법ROUND(number, [decimals])※ number : 반올림할 숫자 ※   decimals : (선택 사항) 반올림할 소

st-d.tistory.com

 

반응형

'db > oracle' 카테고리의 다른 글

oracle TO_TIMESTAMP 유연성과 안정성  (0) 2025.02.10
oracle 문자열 테이블 리스트 만들기  (0) 2025.02.10
oracle round 함수  (0) 2025.02.09
oracle floor 함수  (0) 2025.02.08
nvl 함수와 nvl2 함수의 차이점  (0) 2025.01.23