如何从 PostgreSQL 中的两个函数创建一个函数?

How can create one function from two functions in PostgreSQL?

我想在 PostgreSQL 中创建另一个函数,function_c,来自 function_a 和 function_b。

function_a

CREATE OR REPLACE FUNCTION function_a(year_ INTEGER, col_b INTEGER)
RETURNS INTEGER AS
$$
DECLARE 
    vbl INTEGER;
BEGIN 
    SELECT COUNT(col_b) INTO vbl
    FROM table1
    WHERE date_part('year',table1.col_aa) = year_ AND table1.col_bb = col_b;
    RETURN vbl; 
END;
$$  
LANGUAGE plpgsql;

function_b



CREATE OR REPLACE FUNCTION function_b(year_ INTEGER)
RETURNS INTEGER AS
$$
DECLARE 
    vbl_b integer;
BEGIN 
    SELECT COUNT(col_aa) INTO vble_b
    FROM table1
    WHERE date_part('year',table1.col_aa) = year_;
    RETURN vbl_b
END;
$$  
LANGUAGE plpgsql;

我想创建包含函数 a 和 b 的函数 c,returns: year: function_b的year_参数 中位数:function_a 的 vbl 除以 function_b

的 vbl_b

如何在 PostgreSQL 中从两个函数创建一个函数?

如果我理解正确,下面提到的定义对你有用

CREATE OR REPLACE FUNCTION function_c(year_ INTEGER, col_b INTEGER)
RETURNS table (year1 integer, median numeric) AS
$$
DECLARE 
    var1 INTEGER;
    var2 INTEGER;
    var3 numeric;
BEGIN 
var1=(select * from function_a(year_));
var2=(select * from function_b(year_, vol_b));
var3=var1/var2;

return query
select year_, var3;

END;
$$  
LANGUAGE plpgsql;