aggregate 函数使用示例

 

--本实例演示函数功能
create or replace function pg_sum(integer,integer) returns integer as
$body$
begin
 if $1 is null then
  return $2;
 else
  return $1 + $2;
 end if;
end;
$body$ language 'plpgsql'

--对最后结果乘以2
create or replace function pg_sum_finc(integer) returns integer as
$body$
begin
 return 2 * $1;
end;
$body$ language 'plpgsql'


--drop AGGREGATE pg_sum(integer);
CREATE  AGGREGATE  pg_sum(integer)(
SFUNC = pg_sum,
STYPE = integer,
FINALFUNC=pg_sum_finc,
INITCOND =100   --初始值
);

 

create table tmp_pg_sum(id integer,s1 integer,s2 decimal(12,2));
insert into tmp_pg_sum(id,s1,s2) values(1,2,2.4),
(1,3,2.2),
(2,2,2.5);

select id,pg_sum(s1),sum(s2) from tmp_pg_sum group by id;


----字符串合并处理,主要实现数据参数,并实现分割符
create or replace function pg_concat(text,text,text) returns text as
$body$
begin
 if $1 is null then
  return $2||$3;
 else
  return $1||$2||$3;
 end if;
end;
$body$
language 'plpgsql'

--创建一个finc函数,处理最后一位空格
create or replace function pg_concat_fin(text) returns text as
$body$
begin
 return  substr($1,1,length($1)-1);

end;
$body$
language 'plpgsql'

--drop aggregate  pg_concat(text,text);
create aggregate pg_concat(text,text) (
sfunc = pg_concat,
stype = text,
finalfunc=pg_concat_fin);

 

create table tmp_pg_concat(id integer,name1 varchar(16),name2 varchar(16));

insert into tmp_pg_concat(id,name1,name2)
values(1,'a','a'),
(1,'b','b'),
(1,'c','c'),
(2,'a','a'),
(2,'a','a'),
(3,'a','a');

--
select id,pg_concat(name1,'%') from tmp_pg_concat group by id;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值