PostgreSQL jsonb列按label汇总number值并排序的查询实现
PostgreSQL按JSONB字段分组求和并排序的实现方案
假设你的表名为your_table,存储JSON数据的jsonb列名为json_column,可以用以下SQL语句实现需求:
SELECT json_column->'data'->>'label' AS label, SUM((json_column->'data'->>'number')::integer) AS sum FROM your_table GROUP BY json_column->'data'->>'label' ORDER BY sum DESC;
关键语法说明
->>:PostgreSQL的jsonb操作符,用于提取JSON字段并转换为文本类型,这里用来获取data对象下的label字符串值。(json_column->'data'->>'number')::integer:先提取number的文本值,再强制转换为整数类型,确保能正确执行求和运算。GROUP BY:按照提取出的label字段分组,将相同label的记录聚合在一起。SUM():对每个分组内的number值求和。ORDER BY sum DESC:将最终结果按求和后的数值从高到低排序,符合你需要的输出顺序。
代入你提供的示例数据执行该查询,会得到与期望完全一致的输出结果。
内容的提问来源于stack exchange,提问作者0x55b1E06FF
相关产品推荐
相关产品推荐

