热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

PostgreSQL功能很强大,支持事务,嵌套SQL,触发器,聚合等等几乎所有的商业数据库的功能,不得不佩服他还免费,我个人觉得MySQL不如它。别人老说PostggreSQL慢,其实维护得好,SQL写得合理,性能和MySQL有过之而无不及。言归正传,我前段时间用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;

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


推荐阅读
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • PHP中Smarty模板引擎自定义函数详解
    本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ... [详细]
  • 本文详细介绍了MySQL InnoDB存储引擎中的Redo Log和Undo Log,探讨了它们的工作原理、存储方式及其在事务处理中的关键作用。 ... [详细]
  • 本文探讨了MySQL中的死锁现象及其监控方法,并介绍了如何通过配置和SQL语句调整来优化数据库性能。同时,还讲解了慢查询日志的配置与分析技巧。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 本文介绍了MySQL窗口函数的基本概念、应用场景及常见函数的使用方法。窗口函数在处理复杂查询时非常有用,例如计算每个用户的订单排名、环比增长率、以及动态聚合等。 ... [详细]
  • 解决ADODB连接Access时出现80004005错误的方法
    本文详细介绍了如何解决在使用ADODB连接Access数据库时遇到的80004005错误,包括错误原因分析和具体的解决步骤。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ... [详细]
  • 七大策略降低云上MySQL成本
    在全球经济放缓和通胀压力下,降低云环境中MySQL数据库的运行成本成为企业关注的重点。本文提供了一系列实用技巧,旨在帮助企业有效控制成本,同时保持高效运作。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文提供了处理WordPress网站中出现过多重定向问题的方法,包括检查DNS配置、安装SSL证书以及解决数据库连接错误等步骤。 ... [详细]
author-avatar
萌星
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有