在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;
所以,基本上,是总的部分让我失望。如何调用对聚合函数的结果发出通知?
我知道我可以将整个stats记录传递到RAISE NOTICE并得到一个括号内的结果,但我想必须有一种方法来隔离每个聚合结果。
我尝试了COUNT()AS和LENGTH()AS,但仍然不确定是否可以将这些“AS”变量传递给RAISE NOTICE。
最佳答案
为结果提供标识符:
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
不是聚合函数;关于postgresql - 在Postgres函数循环中使用RAISE NOTICE访问sql聚合方法结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15745655/