[英]SQL how do I round a number to three?
我在 PostgreSQL 工作,並嘗試將平均值四舍五入為三個數字。
我嘗試使用 round(avg(nubmer),3)。 但它不起作用。
我不使用 WITH 或 View,因為我在 function 中使用
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$;
你為什么不使用group by
來寫這個?
SELECT title,
AVG(case when mark IN ('1', '2', . . .) then mark::int
else 0
end) as oc
FROM sch.mark
GROUP BY title;
我不確定這是否能解決您的問題,但它肯定更簡潔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.