彩票走势图

【实用技能】如何在 Navicat 17 中创建自定义 PostgreSQL 聚合

翻译|使用教程|编辑:吉伟伟|2024-12-09 10:59:18.863|阅读 5 次

概述:PostgreSQL 的突出特点之一是广泛支持用户定义的函数和数据类型。Navicat for PostgreSQL 和 Navicat Premium 都有专门的图形用户界面(GUI),可以轻松编写与数据库无缝集成的自定义函数和聚合。本文我们将创建一个在 DVD Rental database 中使用的聚合,按类别连接电影标题。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

PostgreSQL 的突出特点之一是广泛支持用户定义的函数和数据类型。这允许开发人员创建自定义转换、运算符和聚合函数。聚合函数是对数据执行复杂计算和转换的有效方式,超越了 SUM、AVG 和 COUNT 等标准 SQL 聚合函数。Navicat for PostgreSQL (最新版下载试用)和 Navicat Premium 最新版下载试用都有专门的图形用户界面(GUI),可以轻松编写与数据库无缝集成的自定义函数和聚合。我们只需提供一些细节,Navicat 就会为我们生成 pgSQL 语句!在本文中,我们将创建一个在 DVD Rental database 中使用的聚合,按类别连接电影标题。

关于聚合

聚合是 SQL 的一项基本功能,允许对一组记录执行计算或转换,并返回单一结果。最常见的聚合函数是 SUM、AVG、COUNT、MIN 和 MAX,它们允许你分别通过计算总数、平均值、计数、最小值和最大值来快速汇总数据。

然而,SQL 提供的内置聚合函数并不总能满足应用程序的特定需求。这时,创建自定义聚合的功能就变得非常有用。自定义聚合允许你按照自己的逻辑来汇总和转换数据,超越了标准 SQL 聚合的范围。 这一过程通常包括定义一个状态转换函数,每一行都要调用该函数来更新累加器,以及定义一个可选的最终函数,调用该函数来生成最终的聚合结果。

生成转换函数和最终函数

转换函数 array_append_state() 将为每一行调用,以更新聚合状态。

访问 Navicat 的函数编辑器,请单击主按钮栏中的函数按钮,然后单击对象工具栏中的“新建函数”:

Navicat 将从主函数定义开始。在这里,我们将提供函数名称、输入参数和主体:

CREATE FUNCTION "public"."array_append_state" (current_state text[], new_value text)
 RETURNS text[] AS $BODY$
BEGIN
 RETURN array_append(current_state, new_value);
END
$BODY$
 LANGUAGE 'plpgsql' VOLATILE;


当我们完成函数定义后,我们可以点击“保存”来创建函数。

现在我们将返回到对象选项卡,并点击“新建函数”来创建最终函数。

array_to_comma_string() 函数将获取一个电影题目数组,并在每个元素之间插入逗号:

CREATE FUNCTION "public"."array_to_comma_string" (state text[])
 RETURNS text AS $BODY$
BEGIN
 RETURN array_append(state, ', ');
END
$BODY$
 LANGUAGE 'plpgsql' VOLATILE;


创建 comma_concat() 聚合函数

现在我们可以将两个函数插入 Navicat 的聚合编辑器。我们可以通过单击主按钮栏中的“其它”按钮,然后从弹出的菜单中选择“聚合”来访问编辑器:

在表单中,我们将输入类型设置为“文本”,输入状态类型为“text[]”,并提供状态和最终函数。同时,确保初始条件是一个空数组(“{}”):

点击“预览”选项卡,我们就能看到生成的 SQL:

CREATE AGGREGATE "public"."Untitled" (In "pg_catalog"."text")
(
 SFUNC = "public"."array_append_state",
 STYPE = "pg_catalog"."text[]",
 FINALFUNC = "public"."array_to_comma_string",
 INITCOND = "{}",
 PARALLEL = UNSAFE
);
ALTER AGGREGATE "public"."Untitled"("pg_catalog"."text") OWNER TO "postgres";

请注意,聚合体的名称是“无标题”。当我们点击“保存”按钮时,Navicat 将提示我们输入名称,并使用我们提供的名称执行命令。

使用自定义聚合

现在,我们可以像调用其他函数一样调用聚合函数。下面是一个按类别获取电影列表的查询:

SELECT
   c.name AS category,
   comma_concat(f.title) AS movies
FROM category c
JOIN film_category fc ON c.category_id = fc.category_id
JOIN film f ON fc.film_id = f.film_id
GROUP BY c.name
ORDER BY c.name;


结语

在文章中,我们在 Navicat Premium 创建了一个自定义 PostgreSQL 聚合,并在 DVD 租赁数据库中使用它来将电影标题按类别进行连接。

产品试用下载、价格咨询、优惠获取,或其他任何问题,请联系

慧都年终大促火热开启



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
Navicat for MySQL

Navicat for MySQL 是一套管理和开发 MySQL 或 MariaDB 的理想解决方案。

Navicat Premium

Navicat Premium 是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。

Navicat for PostgreSQL

Navicat for PostgreSQL是一套专为PostgreSQL设计的强大数据库管理及开发工具

Navicat for MariaDB

Navicat for MariaDB 为 MariaDB 数据库管理提供了一个原生环境。你可以直观地设计数据库结构、运行 SQL 查询和脚本、管理 MariaDB 用户及其权限。

Navicat for SQL Server

Navicat for SQL Server 是一套专为 Mircosoft SQL Server设计的强大数据库管理及开发工具

title
title
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP