【发布时间】:2016-03-31 09:02:12
【问题描述】:
我正在尝试构建一个函数来返回一定比例的具有特定条件的行。
这是我的尝试:
CREATE OR REPLACE FUNCTION osm_prozent ()
RETURNS integer AS $$
DECLARE
a integer;
b integer;
ergebnis integer;
BEGIN
a = select into a count(*)
from osm_street;
b = select into b count(*)
from osm_street
where hausnummer like '%-%'
or hausnummer like '% %'
or hausnummer like '%/%'
or hausnummer like '%;%'
or hausnummer like '%,%'
or hausnummer ~ '([a-z,A-Z])';
ergebnis = (b/a)*100;
return ergebnis;
END;
$$ LANGUAGE plpgsql;
变量a 是207000,变量b 是11000. 最后我应该有类似5.31% 的东西。
有人可以帮忙正确编写这个函数吗?
【问题讨论】:
-
如果你使用 (b/a) * 100 你将得到 5.31。在您的计算中,b 高于 a,您将获得 6 %
标签: sql postgresql plpgsql