数据库

 首页 > 数据库 > postgresql > 在postgresql数据库中使用聚合函数

在postgresql数据库中使用聚合函数

分享到:
【字体:
导读:
         摘要:PostgreSQL功能很强大,支持事务,嵌套SQL,触发器,聚合等等几乎所有的商业数据库的功能,不得不佩服他还免费,我个人觉得MySQL不如它。别人老说PostggreSQL慢,其实维护得好,SQL写得合理,性能和MySQL有过之而无不及。言归正传,我前段时间用PostgreSQL...

在postgresql数据库中使用聚合函数

PostgreSQL功能很强大,支持事务,嵌套SQL,触发器,聚合等等几乎所有的商业数据库的功能,不得不佩服他还免费,我个人觉得MySQL不如它。别人老说PostggreSQL慢,其实维护得好,SQL写得合理,性能和MySQL有过之而无不及。

言归正传,我前段时间用PostgreSQL来做一个功能,就是想把某个表里面的某个字符型字段的值用逗号隔开“汇总”起来。实现这个功能可以在编程层次上把所有的行列出来,然后拼凑起来,这样的方法是傻子才用,数据量一大性能就不用说了。

我想应该有类似postgres的内嵌函数sum的函数,只是这次sum是汇总字符串而已。于是发现有个聚合函数可以自编的,看了一下Help,很简单。

于是先创建一个函数:

CREATE OR REPLACE FUNCTION concat(text, text)
RETURNS text AS
$BODY$
DECLARE
t text;
BEGIN
IF character_length($1) > 0 THEN
t = $1 ', ' $2;
ELSE
t = $2;
END IF;
RETURN t;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION concat(text, text) OWNER TO postgres;
GRANT EXECUTE ON FUNCTION concat(text, text) TO public;
GRANT EXECUTE ON FUNCTION concat(text, text) TO postgres;
这个函数很简单,就是把两个字符串用逗号拼起来。

然后创建一个聚合函数:

CREATE AGGREGATE sumtext( 
BASETYPE=text, 
SFUNC=concat, 
STYPE=text);
ALTER AGGREGATE sumtext(text) OWNER TO postgres;

然后,你就可以用这个sumtext来做了,类似与sum, average,max之类:

SELECT sumtext(hexiaoren_qm) FROM cw_hexiaojilu;

结果就是你想得到的东西了。

在postgresql数据库中使用聚合函数
分享到:
PostgreSQL函数使用介绍
PostgreSQL函数使用介绍 PostgreSQL的函数也被称为存储过程,可执行操作,通常会作为一些查询和往返在一个单一的数据库内的函数。函数允许数据库重新使用其他应用程序可以直接与您的存储过程而不是一个中间层或。 可以创建在所选择的语言,如SQL,PL/pgSQL,C,Python等功能 语法 创建一个函数的基本语法如下:...
PostgreSQL数据库切割和组合字段函数
PostgreSQL数据库切割和组合字段函数 Postgresql里面内置了很多的实用函数,下面介绍下组合和切割函数 环境:PostgreSQL 9.1.2           CENTOS 5.7 final 一.组合函数1.concat a.语法介绍 concat(str "any" [, str "any" [, ...]]) Concatenate all but first arguments with separators...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……