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

PostgreSQL 9.6:如何对嵌套的jsonb中的所有属性求和?

在PostgreSQL 9.6中,可以使用递归查询和聚合函数来对嵌套的jsonb中的所有属性进行求和。

首先,需要创建一个递归函数来遍历jsonb对象的所有属性。以下是一个示例的递归函数:

代码语言:txt
复制
CREATE OR REPLACE FUNCTION jsonb_sum(jsonb_obj jsonb)
RETURNS numeric AS $$
DECLARE
    sum_value numeric := 0;
BEGIN
    IF jsonb_typeof(jsonb_obj) = 'object' THEN
        -- 遍历对象的所有属性
        FOR key IN SELECT jsonb_object_keys(jsonb_obj) LOOP
            sum_value := sum_value + jsonb_sum(jsonb_obj -> key);
        END LOOP;
    ELSIF jsonb_typeof(jsonb_obj) = 'array' THEN
        -- 遍历数组的所有元素
        FOR element IN SELECT jsonb_array_elements(jsonb_obj) LOOP
            sum_value := sum_value + jsonb_sum(element);
        END LOOP;
    ELSIF jsonb_typeof(jsonb_obj) = 'number' THEN
        -- 直接将数字类型的值累加到总和中
        sum_value := sum_value + jsonb_obj::numeric;
    END IF;

    RETURN sum_value;
END;
$$ LANGUAGE plpgsql;

接下来,可以使用该函数来对嵌套的jsonb中的所有属性进行求和。以下是一个示例查询:

代码语言:txt
复制
SELECT jsonb_sum('{
    "a": 1,
    "b": {
        "c": 2,
        "d": {
            "e": 3,
            "f": [4, 5, 6]
        }
    }
}'::jsonb) AS total_sum;

该查询将返回所有属性的总和,结果为21。

对于PostgreSQL 9.6,腾讯云提供的相关产品是TDSQL-C,它是一种高性能、高可用的云数据库,支持PostgreSQL。您可以通过以下链接了解更多关于TDSQL-C的信息:TDSQL-C产品介绍

请注意,本回答仅针对PostgreSQL 9.6版本,其他版本的PostgreSQL可能会有不同的实现方式。

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

相关·内容

使用 EF Core PostgreSQL JSONB

本文着眼于 JSONBPostgreSQL 作用,以及它如何与 Entity Framework Core 连接,帮助开发人员构建严重依赖数据复杂应用程序。...本文着眼于 JSONBPostgreSQL 作用,以及它如何与 Entity Framework Core 连接,帮助开发人员构建严重依赖数据复杂应用程序。...'warranty'; 按嵌套属性值筛选 筛选 jsonb 列在嵌套对象包含指定值记录。...其中一个功能是 JSONB 支持,这是 PostgreSQL 一种 JSON 二进制格式。 定义实体 我们主要实体是产品,代表我们库存商品。...结论 PostgreSQL JSONB 与 EF Core 集成为在关系数据库上下文中处理复杂、嵌套和动态数据结构提供了可靠解决方案。

46710
  • 如何矩阵所有值进行比较?

    如何矩阵所有值进行比较? (一) 分析需求 需求相对比较明确,就是在矩阵显示值,需要进行整体比较,而不是单个字段值直接进行比较。如图1所示,确认矩阵中最大值或者最小值。 ?...(二) 实现需求 要实现这一步需要分析在矩阵或者透视表情况下,如何整体数据进行比对,实际上也就是忽略矩阵所有维度进行比对。上面这个矩阵维度有品牌Brand以及洲Continent。...只需要在计算比较值时候维度进行忽略即可。如果所有字段在单一表格,那相对比较好办,只需要在计算金额时候忽略表维度即可。 ? 如果维度在不同表,那建议构建一个有维度组成表并进行计算。...通过这个值大小设置条件格式,就能在矩阵显示最大值和最小值标记了。...当然这里还会有一个问题,和之前文章类似,如果同时具备这两个维度外部筛选条件,那这样做的话也会出错,如图3所示,因为筛选后把最大值或者最小值给筛选掉了,因为我们要显示是矩阵值进行比较,如果通过外部筛选后

    7.7K20

    PostgreSQL JSON 处理甩“你”几条街

    首先POSTGRESQL 支持两种JSON格式,JSON and JSONB ,在PG 9.X 版本JSON支持就已经出具规模了(MONGODB 支持BSON格式),拿在postgresql...中大概率你是要使用JSONB 这样格式,这样格式有以下一些好处 1 处理速度快 2 可以添加索引 当然也有一些东西是有限制,这里先不表,另外学习过程,我发现一个点,就是如果你能在学习过程...,格式是jsonb ,但如果你用MONGODB 方式来理解,你可以找到一点不一样地方 可以看到,其实要展示数据在POSTGRESQL 也并不是难事 然后我们创建一个索引,熟悉PG的人都知道他模糊查询厉害...下面我们继续做测试,看看是不是POSTGRESQL 可以一个索引就将所有的查询都HOLD 住。...当然如果你统计数据是全表,或大部分数据,则还是要走全表扫描 这里大致看了一下POSTGRESQL JOSN 支持,相对于某些数据库还是友好,并且符合人类快速理解和上手方式。

    4.7K40

    如何在 WPF 获取所有已经显式赋过值依赖项属性

    获取 WPF 依赖项属性值时,会依照优先级去各个级别获取。这样,无论你什么时候去获取依赖项属性,都至少是有一个有效值。有什么方法可以获取哪些属性被显式赋值过呢?...如果是 CLR 属性,我们可以自己写判断条件,然而依赖项属性没有自己写判断条件地方。 本文介绍如何获取以及显式赋值过依赖项属性。...---- 需要用到 DependencyObject.GetLocalValueEnumerator() 方法来获得一个可以遍历所有依赖项属性本地值。...因此,你不能在这里获取到常规方法获取到依赖项属性真实类型值。 但是,此枚举拿到所有依赖项属性值都是此依赖对象已经赋值过依赖项属性本地值。如果没有赋值过,将不会在这里遍历中出现。...,同时有更好阅读体验。

    19540

    PostgreSQL JSONB 使用入门

    也有很多 JSON 相关函 数和操作符可以用于存储在这些数据类型数据 PostgreSQL支持两种 JSON 数据类型:json 和 jsonb。它们几乎接受完全相同值集合作为输入。...而jsonb数据被存储在一种分解好二进制格式,因为需要做附加转换,它在输入时要稍慢一些。但是 jsonb在处理时要快很多,因为不需要重新解析。...如果一个值 JSON 对象包含同一个键超过一次,所有的键/值都会被保留(** 处理函数会把最后值当作有效值**)。 jsonb不保留空格、不保留对象键顺序并且不保留重复对象键。...接下来测试一下使用索引时查询速度。 索引 GIN 索引介绍 JSONB 最常用是GIN 索引,GIN 索引可以被用来有效地搜索在大量jsonb文档(数据)中出现 键或者键值。...在表每一个属性,在建立索引时,都可能会被解析为多个键值,所以同一个元组tid可能会出现在多个keyposting list

    8K20

    关于PostgreSQL数据增删改查日常总结(主要jsonb类型)

    在工作PostgreSQL数据库操作,最难也就是jsonb类型数据进行增删改查了,其他字段跟MySQL数据库没什么区别,现在我就分享一下平时工作总结相关操作,这是我承包公司一年sql脚本开发遇到并总结...注意,示例ext为jsonb类型。...update tenant_data_record set ext =jsonb_set( ext, '{type}', '""') where id=7903091958494211 (6)更新一张表...to_timestamp("coach_feedback".confirm_time / 1000) AT TIME ZONE 'PRC' AS 确认时间 (4)将两个jsonb类型字段求和查询出来...:59', 'YYYY-MM-DD HH24:MI:SS')) * 1000 (8)查询返回jsonb数据带引号 c.ext->'hco_name' (9)查询返回jsonb数据不带引号

    2K10

    Postgresql架构」使用PostgreSQLJSONB数据类型加快操作

    这有一些直接好处: 效率更高, 加工速度明显加快 支持索引(这可能是一个重要优势,我们稍后会看到), 更简单模式设计(用jsonb列替换实体 - 属性 - 值(EAV)表,可以查询,索引和连接,从而使性能提高到...为避免这种情况,您可以考虑存储稍后可能在常规字段上汇总数据。 有关此问题进一步评论,您可以阅读Heap博客文章何时在PostgreSQL架构避免使用JSONB。...它不会保留空白区域,它会剥离JSON字符串前导/滞后空白区域以及JSON字符串空白区域,所有这些都只会使代码不整齐(毕竟这对你来说可能不是件坏事) 。)...jsonb带来功能非常强大,您可以很好地处理关系数据,就像在常规RDBMS中一样,但是所有这些都在JSON,并且在性能上有非常显着提升,结合了NoSQL解决方案实用性。RDBMS强大功能。...最后,请注意我已经涵盖了指数及其运算符一些典型用法;有关更多详细信息和示例,请查看官方PostgreSQL文档jsonb索引以及JSON函数和运算符。

    6.1K20

    PostgreSQLJSON处理:技巧与应用》

    在这篇文章里,我会为大家详细讲解《PostgreSQLJSON处理:技巧与应用》。一起来挖掘吧! 引言 随着现代应用对于数据结构多样性要求增加,JSON在PostgreSQL角色日益重要。...PostgreSQL JSON 数据类型 ✨ 2.1 JSON 原生 JSON 数据类型支持存储 JSON 数据,但它不执行额外数据验证或约束。...实战:PostgreSQL JSON 应用案例 5.1 动态表单 在动态表单,数据结构经常发生变化,使用 JSON 数据类型可以灵活地存储表单字段和数据。...这些示例展示了如何在实际应用中使用 JSON 和 JSONB 数据类型来应对动态数据结构和配置需求,这些需求随着时间推移可能会发生变化。 JSON 数据类型在这些情况下提供了一种灵活解决方案。...总结 在PostgreSQL处理JSON并不复杂,但为了充分发挥其性能优势,我们需要深入了解它特性和操作技巧。希望猫头虎这篇文章能够帮助你在实际工作更好地处理JSON数据!

    38710

    MySQL与PostgreSQL对比

    text存储接送要高效很多 json和jsonb之间区别 jsonb和json在更高层面上看起来几乎是一样,但在存储实现上是不同。...使用jsonb优势还在于你可以轻易整合关系型数据和非关系型数据, PostgreSQL对于mongodb这类基于文档数据库是个不小威胁,毕竟如果一个表只有一列数据类型是半结构化,没有必要为了迁就它而整个表设计采用...10)索引支持更强 PostgreSQL 可以使用函数和条件索引,这使得PostgreSQL数据库调优非常灵活,mysql就没有这个功能,条件索引在web应用很重要。...总结 MySQL从一开始就没有打算做所有事情,因而它在功能方面有一定局限性,并不能满足一些先进应用程序要求。...如何你确定只在MySQL和PostgreSQL中进行选择,以下规则总是有效: 如果你操作系统是Windows,你应该使用MySQL。

    9K10

    PostgreSQL JSON 和 JSONB 功能与不同

    POSTGRESQL json支持相对某些数据库是非常给力, json数据存储和使用在目前系统开发信息传递是主导....POSTGRESQL 支持JSON可以追溯到 postgresql9.2 (2012年)当时仅仅是能存储JSON格式数据,JSONB是在POSTGRESQL 9.4开始支持(2014)年,JSONB...是通过分解二进制格式来存储JSON数据,JSONB支持索引查找JSONB数据,需要对JSON内部数据进行查找,则应该使用JSONB 格式来存储和调用数据。...,一句话就可以解决,如果你拿POSTGRESQL JOSN当成一个整体,不需要对里面的数据进行处理,那么JSON读取速度会比JSONB快, 但如果你里面的数据进行分析和部分查找,则就需要使用JSONB...2 索引 在对JSON支持POSTGRESQL 可以使用索引有BTREE ,GIN,HASH 等INDEX 1 GIN 索引在JSON 主要作用在查询你JOSN数据包含值,索引是否可以在

    2.1K20

    轻松入门 PostgreSQL for Beginners: A Step-by-Step Guide

    需要一款可以无法律风险,二次分发开源数据库,唯有PG 可以贡献核心代码,社区所有的用户都可以为之背书。 数据库服务|DaaS服务提供商 开源产品服务提供商,能力如何体现?...5、PostgreSQL支持JSON和其他NoSQL功能,如本机XML支持和使用HSTORE键值。它还支持索引JSON数据以加快访问速度,特别是10版本JSONB更是强大。...总结 从应用场景来说,PG更加适合严格企业应用场景(比如金融、电信、ERP、CRM),但不仅仅限制于此,PostgreSQLjson,jsonb,hstore等数据格式,特别适用于一些大数据格式分析...这些属性类似于 MySQL 数据库支持 AUTO_INCREMENT 属性。...第三方应用对象可以放在独立模式,这样它们就不会与其他对象名称发生冲突。 模式类似于操作系统层目录,但是模式不能嵌套

    79432

    PostgreSQL 变化多端使者 你猜不透 hstore

    在非结构化,半结构化数据横行今天,除了MONGODB 让人“羡慕嫉妒恨”,以外能想到好像也只有PG了,在支持json, josnb下PG另类hstore数据类型是否多余,还是多种应用提供了更良好支持...首先有需要声明 这个类型不是要代替或者与JSON 类型进行竞争,换句话hstore 类型是JSON,JSONB 一种有益补充,当你在产生某些数据情况下,无法其进行合理二维表格以及关系描述,...或者你数据不存在嵌套关系,或需要处理复杂嵌套关系。...,介于想使用MONGODB,但又没有特别大求和数据量情况下,需要灵活应对项目中需求变动频繁时一个好技术方法,来规避后期频繁改动表结构,字段长度,以及一些,让需求,开发,运维都头痛后续工作...所以POSTGRESQL hstore 是一个在传统数据库,非结构化,半结构化良好解决方案。 ?

    1.7K20

    JSON 与 JSONB

    现在很多开源系统和开源软件都支持 JSON 与 JSONB,比如:Postgresql 和 MongoDB 等。这也导致了面试中被问到 JSON 与 JSONB 区别时,很多人不知所措! ?...首先,hstore是一个扩展模块,它允许你保存key=>values键值,且键值都只能是texts类型(但是,值也允许sqlNULL) json与jsonb 允许你保存一个有效json值(定义)....) 当jsonb将在未来稳定版发行可用时,这有两个主要使用情况,你很容易在他们之间选择: 如果你应用只用json表示,PostgreSQL只用于保存与获取时,你应该使用json....如果你需要在PostgreSQL做比较多json值操作,或者在一些json字段上使用索引时,你应该使用jsonb ---- 官方文档上说: 有两个JSON数据类型:json和jsonb。...另外,如果值一个JSON对象多次包含相同键,那么保存所有的键/值。(处理函数将最后一个值当做操作值。)相比之下, jsonb不保存空格,也不保存对象键顺序,并且不保存重复对象键。

    4.9K10

    PostgreSQL 14及更高版本改进

    PostgreSQL 14及更高版本 本文谈谈PG14关键特性及社区中正在谈论PG15及更高版本内容。...PG14主要特性 逻辑复制改进 PG14逻辑复制进行了几项增强: 1) 正在进行事务中支持逻辑复制 有助于减少大型事务回放延迟,这里详细进行了介绍: http://amitkapila16...详情可参考: https://www.postgresql.fastware.com/blog/logical-decoding-of-two-phase-commits 3) 包含DDL事务进行逻辑解码性能提升...4) SP-GiST可以使用INCLUDE列 允许SP-GiST索引进行更多仅索引扫描 5) REINDEX现在可以处理分区表所有子表或索引 6) REINDEX现在可以改变新索引表空间 通过指定...详情参考: https://www.postgresql.org/docs/release/14.0/ PG15及更高版本 最后列出PG社区正讨论特性,可能加入到PG15或之后版本

    7.7K40

    POSTGRESQL 15 从等待中被驱逐JSON新功能,只能祈祷 PostgreSQL 16

    并提出这个功能会在POSTGRESQL 16 可能回归。 说到这里,到底是什么样JSON功能在PG15 说好要有,但是被移除了。...这里针对JSONB 格式数据数据进行判断是否是JSON数据是否存在 KEY 举例 select json_exists('{"a":123}'::jsonb,' json_exists |...这点在当前JSON 格式数据在应用程序中大量使用,让POSTGRESQLJSONB 和 JSON 数据处理,保持1线阵营是有利。...但不幸是,基于整体结构难度和时间原因,同时还基于原有编码结构,在这些功能,在加载数据后性能等问题,导致在POSTGRESQL 15 这些POSTGRESQL 在处理JSON 数据功能流产...在我们使用POSTGRESQL 15功能,我们也继续期待POSTGRESQL 16 能对POSTGRESQL 在处理JSON 数据功能进行强化。

    1.2K10
    领券