在 postgresql 中,如果我想要百分比,我只写:
select x / sum(x) over() ...
在函数内部它不起作用,因为聚合函数表现不佳。
我试图找到解决方案,但没有成功。这是我真正需要的简单版本,但我相信这个问题的解决方案肯定会为我指明正确的方向。
更多细节...
如果我创建这个简单的表:
create table ttt(v1 numeric, v2 numeric);
insert into ttt values (2,1),(5,2),(10,4);
如果我运行:
select v1/sum(v1) over() from ttt; --returns relative frequencies
我得到:
select v1/sum(v1) over() from ttt;
?column?
------------------------
0.11764705882352941176
0.29411764705882352941
0.58823529411764705882
(3 rows)
现在,如果我想创建一个做同样事情的函数,我会写:
create or replace function rfreq (double precision)
returns double precision
AS
'
select
$1 / sum($1) over()
'
LANGUAGE 'sql';
我得到:
select rfreq(v1) from bruto;
rfreq
-------
1
1
1
(3 rows)
Postgresql 没有在函数内部进行总结。
有什么建议么?谢谢你,阿里。