首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从PostgreSQL中由管道分隔的列中的键值对列表计算distinct值

从PostgreSQL中由管道分隔的列中的键值对列表计算distinct值的方法如下:

  1. 首先,将包含键值对列表的列拆分成多个独立的键值对。可以使用PostgreSQL的内置函数string_to_array将字符串按照指定的分隔符(这里是管道符号)拆分成数组。

例如,假设有一个名为data的列包含以下数据:

代码语言:txt
复制

key1:value1|key2:value2|key3:value3

代码语言:txt
复制

使用以下查询可以将该列拆分成数组:

代码语言:sql
复制

SELECT string_to_array(data, '|') AS key_value_pairs

FROM your_table;

代码语言:txt
复制

这将返回一个包含拆分后键值对的数组:

代码语言:txt
复制

{key1:value1,key2:value2,key3:value3}

代码语言:txt
复制
  1. 接下来,使用PostgreSQL的内置函数unnest将数组展开为多行数据。这将使每个键值对成为单独的行。

使用以下查询可以展开数组:

代码语言:sql
复制

SELECT unnest(string_to_array(data, '|')) AS key_value_pair

FROM your_table;

代码语言:txt
复制

这将返回多行数据,每行包含一个键值对:

代码语言:txt
复制

key1:value1

key2:value2

key3:value3

代码语言:txt
复制
  1. 现在,可以使用substring函数和正则表达式提取每个键值对中的键或值。使用正则表达式来匹配键和值之间的冒号分隔符。

使用以下查询可以提取键和值:

代码语言:sql
复制

SELECT

代码语言:txt
复制
   substring(key_value_pair from '([^:]+):') AS key,
代码语言:txt
复制
   substring(key_value_pair from ':(.+)') AS value

FROM (

代码语言:txt
复制
   SELECT unnest(string_to_array(data, '|')) AS key_value_pair
代码语言:txt
复制
   FROM your_table

) AS subquery;

代码语言:txt
复制

这将返回多行数据,每行包含一个键和一个值:

代码语言:txt
复制

key1 | value1

key2 | value2

key3 | value3

代码语言:txt
复制
  1. 最后,可以使用DISTINCT关键字计算唯一的键值对。

使用以下查询可以计算唯一的键值对:

代码语言:sql
复制

SELECT DISTINCT

代码语言:txt
复制
   substring(key_value_pair from '([^:]+):') AS key,
代码语言:txt
复制
   substring(key_value_pair from ':(.+)') AS value

FROM (

代码语言:txt
复制
   SELECT unnest(string_to_array(data, '|')) AS key_value_pair
代码语言:txt
复制
   FROM your_table

) AS subquery;

代码语言:txt
复制

这将返回多行数据,每行包含一个唯一的键和一个唯一的值:

代码语言:txt
复制

key1 | value1

key2 | value2

key3 | value3

代码语言:txt
复制

这是一种从PostgreSQL中由管道分隔的列中的键值对列表计算distinct值的方法。请注意,这只是其中一种实现方式,具体的实现方法可能因数据结构和需求而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在 Python 中计算列表唯一

在本文中,我们将探讨四种不同方法来计算 Python 列表唯一。 在本文中,我们将介绍如何使用集合模块集合、字典、列表推导和计数器。...接下来,我们将探索列表理解,提供一种简洁有效方法来实现预期结果。最后,我们将研究如何使用集合模块计数器,它提供了更高级功能来计算集合中元素出现次数。...方法 1:使用集合 计算列表唯一最简单和最直接方法之一是首先将列表转换为集合。Python 集合是唯一元素无序集合,这意味着当列表转换为集合时,会自动删除重复。...方法 3:使用列表理解 Python 列表理解是操作列表有效方法。它为创建新列表提供了紧凑且可读语法。有趣是,列表推导也可以计算列表唯一。...方法 4:使用集合模块计数器 Python 集合模块提供了一个高效而强大工具,称为计数器,这是一个专门字典,用于计算集合中元素出现次数。通过使用计数器,计算列表唯一变得简单。

25620

01-03章 检索排序数据第1章 了解SQL第2章 检索数据第3章

特性定义数据在表如何存储,存储哪类数据,数据如何分解,各部分信息如何命名等。 模式(schema)用来描述数据库特定表,也可以用来描述整个数据库(和其中表关系)。...和数据类型 表(column)组成,存储表某部分信息,每个都有相应数据类型(datatype)。而行(row)是表一个记录。...任何列作为主键条件: 任意两行都不具有相同键值; 每一行都必须具有一个主键值(主键不允许NULL); 主键不允许修改或更新; 主键值不能重用(某行删除,它主键不能赋给以后新行...使用DISTINCT关键字,作用于所有,指示数据库只返回不同。 SELECT DISTINCT vend_id FROM Products; ?...屏幕快照 2018-05-25 06.04.04.png 对于上述例子输出,仅在多个行具有相同 prod_price 时才产品按prod_name 进行排序。

2.6K10

Citus 分布式 PostgreSQL 集群 - SQL Reference(查询分布式表 SQL)

目录 聚合函数 Count (Distinct) 聚合 HyperLogLog 估计 Top N 个项 基本操作 现实例子 百分位计算 限制下推 分布式表视图 连接(Join) 共置连接 引用表连接...例如,为了计算平均值,Citus 每个 worker 那里获得一个总和和一个计数,然后 coordinator 节点计算最终平均值。...如果不是,Citus 每个 worker 运行 select distinct 语句, 并将列表返回给 coordinator,从中获取最终计数。...阈值可以 topn.number_of_counters GUC 控制。它默认为 1000。 现实例子 现在来看一个更现实例子,说明 TopN 在实践如何工作。...在这种情况下,要分区查询优化器根据分布、连接键和表大小来确定。使用重新分区表,可以确保只有相关分片相互连接,从而大大减少了通过网络传输数据量。

3.2K20

SQL聚合函数 LIST

描述 LIST聚合函数返回指定以逗号分隔列表。 一个简单LIST(或LIST ALL)返回一个字符串,其中包含一个逗号分隔列表,该列表所选行string-expr所有组成。...其中string-expr为空字符串(")逗号分隔列表占位符逗号表示。 string-expr为NULL行不包含在逗号分隔列表。...LIST DISTINCT返回一个字符串,该字符串包含一个逗号分隔列表,该列表所选行string-expr所有不同(唯一)组成:LIST(DISTINCT col1)。...示例 下面的嵌入式SQL示例返回一个主机变量,该变量包含示例Home_State列出所有逗号分隔列表。...下面的嵌入式SQL示例返回一个主机变量,该变量包含示例Home_State列出所有不同(唯一)逗号分隔列表

1.9K40

SQL命令 SELECT(一)

DISTINCT关键字指定选择项必须是唯一DISTINCT BY关键字子句指定项必须是唯一。 项目(或用逗号分隔项目列表)用括号括起来。 通常,项目是名称。...select-item - 要检索一个或多个(或其他)。 多个选择项被指定为一个逗号分隔列表。 还可以使用*符号检索所有。...select-item列表指定,表FROM table-ref子句指定,WHERE子句可选地提供一个或多个限制条件,选择哪些行返回它们。...在更复杂查询,SELECT可以检索、聚合和非数据,可以使用连接多个表检索数据,也可以使用视图检索数据。 SELECT还可以用于SQL函数、宿主变量或字面量返回。...多个参数空格分隔DISTINCT子句 DISTINCT关键字子句将消除冗余字段。 它有两种形式: SELECT DISTINCT:为每个选择项唯一组合返回一行。

5.3K10

SQL聚合函数 %DLIST

DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔字段列表。 string-expr - 计算结果为字符串SQL表达式。...通常是所选表名称。 %FOREACH(col-list) - 可选-列名或以逗号分隔列名列表。 %AFTERHAVING - 可选-应用在HAVING子句中条件。...一个简单%DLIST(或%DLIST ALL)返回列表,该列表所选行string-expr所有非null组成。 string-expr为NULL行不会作为元素包含在列表结构。...%DLIST DISTINCT返回一个列表所选行string-expr所有不同(唯一)非null组成:%DLIST(DISTINCT col1)。...请注意,在ODBC模式下,%DLIST用逗号分隔列表,而$LISTTOSTRING(默认情况下)返回%List中用逗号分隔元素。

1.1K30

Citus 分布式 PostgreSQL 集群 - SQL Reference(查询处理)

Citus 查询处理管道涉及两个组件: 分布式查询计划器和执行器 PostgreSQL 计划器和执行器 我们将在后续部分更详细地讨论它们。...分布列上键值查找或修改查询规划过程略有不同,因为它们恰好命中一个分片。一旦计划器收到传入查询,它需要决定查询应该路由到正确分片。为此,它提取传入行分布并查找元数据以确定查询正确分片。...要查询前 20 个访问量最大页面上访问者主机数,我们可以使用子查询来查找页面列表,然后使用外部查询来计算主机数。...这个例子展示了 Citus 如何使用分布式子计划在多个步骤执行查询,以及如何使用 EXPLAIN 来了解分布式查询执行。...您可以 PostgreSQL 手册中了解有关 PostgreSQL 计划器和执行器更多信息。最后,分布式执行器将结果传递给 coordinator 进行最终聚合。

1.2K20

SQL聚合函数 AVG

DISTINCT可以指定BY(col-list)子句,其中col-list可以是单个字段,也可以是逗号分隔字段列表。 expression - 任何有效表达式。...通常是包含要取平均值数据名称。 %FOREACH(col-list) - 可选—列名或以逗号分隔列名列表。...如果查询没有返回行,或者返回所有行数据字段为NULL, AVG返回NULL。 单个求平均值 如果提供给AVG所有表达式都是相同,那么结果平均值取决于访问表行数(除数)。...例如,如果表所有行某个特定具有相同,那么该平均值就是一个计算,它可能与个别略有不同。 为了避免这种差异,可以使用DISTINCT关键字。...下面的例子展示了计算平均值如何产生轻微不平等。 第一个查询不引用表行,所以AVG通过除以1进行计算。 第二个查询引用表行,因此AVG通过除以表行数进行计算

3.2K51

POSTGRESQL PG VS SQL SERVER 到底哪家强? (译) 应该是目前最全面的比较

聚集索引根据键值(索引定义)对表或视图中数据行进行排序。一个表只能有一个聚集索引。非聚集索引存储在表数据之外,每个键值条目都有一个指向数据指针。...列表分区将表按显式列出预定义键值分组,每个分区中都出现这些键值。 SQL Server SQL Server支持表和索引分区。数据在水平方向上被分区,并将一组行映射到单个分区。...SQL Serveridentity属性为表创建一个标识,用于生成行键值。创建时指定两个:seed(第一行初始)和increment(增加值相对于上一行)。...MSSQL 中文:两种数据库在自主计算上面的不同 PostgreSQL计算称为生成(generated columns)。此功能是在版本12引入。...SQL Server计算如果未标记为PERSISTED属性,则不会在表物理存储;只有在是确定(或始终返回相同结果)时,才能被持久化。

1.5K20

MADlib——基于SQL数据挖掘解决方案(8)——数据探索之描述性统计

统计学角度,简单说统计任务是样本推断总体;数据探索角度,我们就要关注更具体内容,通常是样本推断总体数据特征。...输出表和概要表各字段含义分别由表2、表3给出。 target_cols(可选) VARCHAR 缺省为‘*’。需要计算相关性组成逗号分隔字符串。...,会忽略包含,这意味着NULL最终相关性结果没有任何影响。...数据库表角度看,这些统计量简单而直观,目标属性使用基本count(*)、count(distinct)函数,以及类似 is null 这样过滤条件执行数据库查询即可得到诸如此类统计量。...函数为每个分组独立计算汇总统计信息,也就是说分组不合并在一起(类似SQLgrouping合计),这点与常规PostgreSQL风格GROUP BY命令不同。

1.4K20

SQL聚合函数 XMLAGG

DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔字段列表。 string-expr - 计算结果为字符串SQL表达式。...通常,这是要从其中检索数据名称。 %FOREACH(col-list) - 可选-列名或以逗号分隔列名列表。 %AFTERHAVING - 可选-应用在HAVING子句中条件。...XMLAGG DISTINCT返回所选行string-expr所有不同(唯一)组成连接字符串:XMLAGG(DISTINCT COL1)。将忽略string-expr为NULL行。...XMLAGG和ORDER BY XMLAGG函数将来自多行表列连接到单个字符串。因为在计算所有聚合字段之后,将逐个从句应用于查询结果集,所以逐个不能直接影响该字符串序列。...给定聚合结果列出无法显式排序。 相关聚合函数 XMLAGG返回一个串连字符串。 LIST返回逗号分隔列表。 %DLIST返回包含每个元素IRIS列表

1.3K00

SQL | SQL 必知必会笔记 (一 )

(column) 表一个字段,所有表都是有一个和 多个组成 行(row) 表一个记录(record) 主键(primary key) 一(或一组),其能够唯一标识表每一行 关键字(...关键字不能用作表或者名字 子句(clause) SQL 语句子句构成,有些子句是必需,有些则是可选 一些规则 多条 SQL 语句必须以分号分隔。...这些单词称为 关键字,每个 SQL 语句都是一个或多个关键字构成。使用 SELECT 关键字检索表数据,必须给出想选择什么(SELECT)和什么地方选择两条信息(FROM)。...检索不同 SELECT vend_id FROM Products; 使用 DISTINCT 关键字只返回不同(唯一。...如果想在多个列上降序排序,必须每一指定 DESC 关键字。

2.5K51

Statistics In PostgreSQL

Most common values: 出现次数最多一组。将它们踢出直方图可以减少极端造成估算误差。 Distinct Number: 即这一一共有多少个不同。...Functional Dependency 在数据库课程我们学到过当 A 取某个时, B 总是会取一个相同,则存在 B A 函数依赖。...PostgreSQL 对于给定 n ,使用是如下简单算法维护 n 跟前 n-1 之间依赖性: 基于采样数据计算函数依赖,因为中间会进行多次排序等操作,全量数据会过于耗时; 首先枚举所有可能之间排列....JPEG] 这个函数会接受 CNF 形式谓词数组( AND 连接数组各个谓词)。...其他流程上,TiDB 和 PostgreSQL 大体上是相同。 PG 如何使用统计信息多表进行估算 这里我们主要介绍一下 PostgreSQL 如何 inner join 进行估算。

1.8K00

两个神奇R包介绍,外加实用小抄

小抄准备好 1.准备工作 准备好Rstudio 安装tydir:install.packages("tydir") 加载tydir:library(tydir) 2.key-value:键值 键和都是列名...paste,连接两个字符串,括号要填两个代连接字符并指定分隔符(sep),没有分隔符就填sep=“”。 1:3表示1到三。...expand(列出每所有可能组合,天哪我是写到这里时候刚看懂!) 来看示例 ? ? 我是看到了结果才知道我干了啥喂。就是选中各种组合,成为一个新表。...二、Dplyr能实现小动作 1.arrange 排序 按某一/两大小,按照升/降行排序。...3.distinct 去除重复行(其实就是列出某一所有的不同distinct(frame1,geneid) distinct(frame1,geneid,Sampleid)#列出这两个都重复

2.5K40

SQL聚合函数 JSON_ARRAYAGG

DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔字段列表。 string-expr - 计算结果为字符串SQL表达式。...通常是所选表名称。 %FOREACH(col-list) - 可选-列名或以逗号分隔列名列表。 %AFTERHAVING - 可选-应用在HAVING子句中条件。...JSON_ARRAYAGG DISTINCT返回一个JSON数组,所选行string-expr所有不同(唯一)组成:JSON_ARRAYAGG(DISTINCT col1)。...因为在计算所有聚合字段之后,查询结果集中应用了一个ORDER BY子句,所以ORDER BY不能直接影响这个列表序列。...在某些情况下,JSON_ARRAYAGG结果可能是按顺序出现,但是不应该依赖于这种顺序。 在给定聚合结果列出不能显式排序。 相关聚合函数 LIST返回一个逗号分隔列表

1.9K30

Data Access 之 MyBatis(三) - SQL Mapping XML(Part A)

cache-ref – 引用其它命名空间缓存配置。 resultMap – 描述如何数据库结果集中加载对象,是最复杂也是最强大元素。 sql – 可被其它语句引用可重用语句块。...keyColumn (仅适用于 insert 和 update)设置生成键值在表列名,在某些数据库(像 PostgreSQL,当主键不是表第一时候,是必须设置。...获取自增主键 数据存储在支持自增主键数据库如何获取数据插入成功后数据库生成键值?...图片 但是获取到键值为null,MyBatis是如何获取自增主键?...int insertEmployeeWithAllProperties(Employee employee); 在employee.xml增加响应SQL映射语句,使用selectKey标签查出来并经过计算后得出作为插入

81610

SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP

DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔字段列表。 expression - 任何有效表达式。...通常是包含要分析方差数据名称。 %FOREACH(col-list) - 可选-列名或以逗号分隔列名列表。 %AFTERHAVING - 可选-应用在HAVING子句中条件。...这些方差聚合函数通常应用于具有数值字段或表达式。 它们将非数值(包括空字符串("))计算为零(0)。 这些方差聚合函数忽略数据字段NULL。...方差(DISTINCT BY(col2) col1)返回记录col1字段方差,其中col2是不同(唯一)。 但是请注意,不同col2可能包含一个单独NULL。...示例 下面的示例使用方差返回 sample.employee 雇员年龄方差,以及一个或多个雇员表示不同年龄方差: SELECT VARIANCE(Age) AS AgeVar,VARIANCE

1.5K20

SQL命令 GROUP BY

GROUP BY field {,field2} 参数 field - 其中检索数据一个或多个字段。 单个字段名或以逗号分隔字段名列表。...指定字段 GROUP BY子句最简单形式指定单个字段,如GROUP BY City。 这将为每个惟一City选择任意一行。 还可以指定以逗号分隔字段列表,将其组合视为单个分组术语。...但是,如果在逗号分隔列表中指定一个字面值作为字段,则该字面值将被忽略,并且GROUP BY将为指定字段名每个惟一组合选择任意一行。...) FROM Sample.Person GROUP BY Home_State 当选择列表聚合字段组成时,不应将GROUP BY子句与DISTINCT子句一起使用。...如果查询仅聚合函数组成且不返回表任何数据,则返回%ROWCOUNT=1,并为聚合函数返回一个空字符串(或0)

3.8K30
领券