在Postgres函数中,我试图循环使用各种聚合函数的select语句,例如count()和length()。像这样:
DECLARE stats RECORD;
FOR stats IN SELECT length(something), count(something_else) from widgets LOOP
END LOOP;
在该循环中,我想在结果上调用RAISE NOTICE。
通常(如果我没有使用聚合函数)我会执行以下操作:
FOR stats IN SELECT something, something_else from widgets LOOP
RAISE NOTICE '% %', something, something_else;
END LOOP;
所以,基本上,它只是让我失望的聚合部分。如何在聚合函数的结果上调用RAISE NOTICE?
我知道我可以将整个统计记录传递给RAISE NOTICE并获得括号结果,但我认为必须有办法隔离每个汇总结果。
我尝试了COUNT()AS和LENGTH()AS,但我仍然不确定我是否可以将这些“as”变量传递给RAISE NOTICE。
答案 0 :(得分:3)
给结果一个标识符:
FOR stats IN
SELECT length(something) something, count(something_else) something_else
from widgets
group by 1
loop
RAISE NOTICE '% %', stats.something, stats.something_else;
END LOOP;
但请注意,您需要使用group by
至count
,因为length
不是聚合函数;