我在PostgreSQL中工作,尝试将平均值四舍五入为三个数字。
我尝试使用round(avg(nubmer),3)。但这是行不通的。
我不使用WITH或View,因为我在函数内部使用
CREATE OR REPLACE FUNCTION sch.show_avg()
RETURNS TABLE("title" character varying, "mark" numeric)
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
RETURN QUERy
SELECT distinct title,avg(case
when mark = '1' then 1::integer
when mark = '2' then 2::integer
when mark = '3' then 3::integer
when mark = '4' then 4::integer
when mark = '5' then 5::integer
when mark = '6' then 6::integer
when mark = '7' then 7::integer
when mark = '8' then 8::integer
when mark = '9' then 9::integer
when mark = '10' then 10::integer
when mark = '11' then 11::integer
when mark = '12' then 12::integer
else 0::integer
end)
over (partition by title) as oc FROM sch.mark;
END;
$BODY$;
答案 0 :(得分:0)
您为什么不使用c
来写这个?
$
我不确定这是否可以解决您的问题,但肯定会更简洁。