postgresql 数组函数全集

1. 分组聚合

ARRAY_AGG(参数1:字段名称) : 聚合同一个字段的多个值为一个数组对象

select product_name_in_sci_pdp,count(1),ARRAY_AGG(npi_product_name) from dim_product_mapping GROUP BY product_name_in_sci_pdp

2 数组拆分

2.1 数组拆分,还原为多行
select 'A' as fieldName1,'B' as fieldName2, "unnest"(ARRAY['CN','AR','BR','IN']) AS plant

在这里插入图片描述

2.2 数组拆分,重组为一个字符串

array_to_string(参数1:数组,参数2:拼接字符) : 将数组中的值拼接成新的字符串

select product_name_in_sci_pdp,count(1),array_to_string(ARRAY_AGG(npi_product_name),',') from dim_product_mapping GROUP BY product_name_in_sci_pdp

2.3 字符串拆分为数组

string_to_array(参数1:原始字符串,参数2:拆分字符) : 将原始字符串按拆分字符串拆分为一个数组

with t_level_1 as(
SELECT '123,456,789'::VARCHAR as include_plants
)
SELECT string_to_array(include_plants, ',') as plants from t_level_1

3. 数组去重

示例

select product_name_in_sci_pdp,count(1),ARRAY_AGG(DISTINCT npi_product_name) from dim_product_mapping GROUP BY product_name_in_sci_pdp

4. 数组取第一个元素

需要去一下重

SELECT demand_region,(ARRAY_AGG(demand_factory))[1] from dim_factory_sourcing_dependency where demand_process='Ship FG'  GROUP BY demand_region ORDER  BY demand_region

5.单个元素关联数组

使用 any() 方法实现

OR group_id = any(string_to_array(mgmt_team_group, ','))

5.判断数组包含元素

OR 'xxx' = any(mgmt_team_group)

其他的后续补充…
参考:
https://blog.csdn.net/shulinshulinzi/article/details/115245325?spm=1001.2101.3001.6650.18&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-18.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-18.pc_relevant_default&utm_relevant_index=23

PostgreSQL是一款功能强大的关系型数据库管理系统(RDBMS),它支持多种数据类型,包括数组数组是一种特殊的数据结构,可以存储一组有序的相同类型的数据项。在PostgreSQL中,数组是一种嵌套的数据类型,可以存储一组值,这些值可以是任何数据类型。 PostgreSQL中的数组类型可以用于存储一系列的值,这些值可以是相同的数据类型,也可以是不同数据类型的组合。数组在查询和操作方面提供了方便的方法,例如使用索引和过滤器等。 在PostgreSQL中,可以使用以下语法创建数组: ```sql CREATE TABLE table_name ( column_name ARRAY(data_type) ); ``` 其中,`table_name`是表的名称,`column_name`是列的名称,`data_type`是数组中元素的类型。 例如,创建一个名为`students`的表,其中包含一个名为`grades`的数组列,可以这样创建: ```sql CREATE TABLE students ( id INT, name VARCHAR(50), grades INT[] ); ``` 在上述示例中,`grades`列是一个整数类型的数组列。 要向数组中添加元素,可以使用`ARRAY()`函数和花括号语法。例如,要将一个整数添加到`grades`数组中,可以使用以下语句: ```sql INSERT INTO students (id, name, grades) VALUES (1, 'John', ARRAY[5, 8, 9]); ``` 上述语句将一个整数列表添加到`grades`数组中。如果要查询某个列的数组数据,可以使用类似以下的语法: ```sql SELECT column_name FROM table_name WHERE condition; ``` 可以使用WHERE子句来过滤数组中的元素。例如,要查询`grades`数组中大于等于7的元素,可以使用以下语句: ```sql SELECT * FROM students WHERE grades @> '{7, 8}'; ``` @>`运算符用于比较数组中的元素是否符合给定的条件。在这种情况下,它返回满足条件的元素。 除了基本的数组操作之外,PostgreSQL还提供了其他高级功能,如数组索引、过滤器、排序等。这些功能可以帮助您更高效地处理数组数据。有关更多详细信息,请参阅PostgreSQL文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值