2011-09-28 6 views
1

비율을 반환하는 일부 사용자에 대해 SELECT 쿼리를 작성해야합니다. 관련된 수학은 두 숫자의 단순한 나누기 일뿐입니다. 그러나 그들은 비율을 십진수가 아닌 분수로 나타내기를 원합니다. Oracle 10g를 사용하여 SQL에서이를 수행하는 가장 좋은 방법은 무엇입니까?SQL을 사용하여 분수로 소수점 표시

CREATE FUNCTION gcd (x INTEGER, y INTEGER) RETURN INTEGER AS 
    ans INTEGER; 
BEGIN 
    IF (y <= x) AND (x MOD y = 0) THEN 
     ans := y; 
    ELSIF x < y THEN 
     ans := gcd(y, x); -- Recursive call 
    ELSE 
     ans := gcd(y, x MOD y); -- Recursive call 
    END IF; 
    RETURN ans; 
END; 

을 그리고 일부 문자열을 연결하는 당신의 SQL에서 해당 기능을 사용합니다 :

당신은 오라클에서 함수를 정의 할 수 있습니다
+6

이'4를/8' 또는 '1/2'로 단순화해야합니까? –

+1

이 비율은 어떻게 저장됩니까? (예 : 분모와 분자가 모두 있습니까?) – NullUserException

+0

분수를 단순화해야합니다. – indiguy

답변

9

는 최대 공약수 (taken from here)를 계산하는

SELECT CAST(TRUNC(A/GCD(A, B)) AS VARCHAR2(10)) 
     || '/' || 
     CAST(TRUNC(B/GCD(A, B)) AS VARCHAR2(10)) AS FRACTION FROM TABLE 
+2

참고 : http://en.wikipedia.org/wiki/Euclidean_algorithm – NullUserException

관련 문제