Hi billykopecki,
Since the Oracle REMAINDER (m, n) function result is calculated as:
m - (n * X) where X is the integer nearest m / n
In Vertica, you can create two REMAINDER functions like this:
Code: Select all
dbadmin=> CREATE OR REPLACE FUNCTION remainder (m INT, n INT) RETURN FLOAT
dbadmin-> AS
dbadmin-> BEGIN
dbadmin-> RETURN m - (n * ROUND(m / n));
dbadmin-> END;
CREATE FUNCTION
dbadmin=>
dbadmin=> CREATE OR REPLACE FUNCTION remainder (m FLOAT, n FLOAT) RETURN FLOAT
dbadmin-> AS
dbadmin-> BEGIN
dbadmin-> RETURN m - (n * ROUND(m / n));
dbadmin-> END;
CREATE FUNCTION
Examples:
Code: Select all
dbadmin=> SELECT remainder(15, 6), remainder(15,5), remainder(15, 4), remainder(11.6, 2), remainder(11.6, 2.1), remainder(-15, 4);
remainder | remainder | remainder | remainder | remainder | remainder
-----------+-----------+-----------+-----------+-----------+-----------
-3 | 0 | -1 | -0.4 | -1 | 1
(1 row)
dbadmin=> SELECT remainder(5, 2), remainder(5, 5), remainder(2, 5), remainder(-2, 5), remainder(5, -1), remainder(5, 0.5), remainder(5, 1.2);
remainder | remainder | remainder | remainder | remainder | remainder | remainder
-----------+-----------+-----------+-----------+-----------+-----------+-----------
-1 | 0 | 2 | -2 | 0 | 0 | 0.2
(1 row)