在Postgres 9.3数据库中,我有一张表,其中一列包含JSON,如下面示例中所示的测试表所示。
test=# create table things (id serial PRIMARY KEY, details json, other_field text);
CREATE TABLE
test=# \d things
Table "public.things"
Column | Type | Modifiers
-------------+---------+-----------------------------------------------------
id | integer | not null default nextval('things_id_seq'::regclass)
details | json |
other_field | text |
Indexes:
"things_pkey" PRIMARY KEY, btree (id)
test=# insert into things (details, other_field)
values ('[{"json1": 123, "json2": 456},{"json1": 124, "json2": 457}]', 'nonsense');
INSERT 0 1
test=# insert into things (details, other_field)
values ('[{"json1": 234, "json2": 567}]', 'piffle');
INSERT 0 1
test=# select * from things;
id | details | other_field
----+-------------------------------------------------------------+-------------
1 | [{"json1": 123, "json2": 456},{"json1": 124, "json2": 457}] | nonsense
2 | [{"json1": 234, "json2": 567}] | piffle
(2 rows)
JSON始终是一个包含可变数量哈希值的数组。每个哈希始终具有相同的键集。我正在尝试编写一个查询,该查询为JSON数组中的每个条目返回一行,并为每个哈希键和Things表中的ID设置列。我希望输出如下所示:
thing_id | json1 | json2
----------+-------+-------
1 | 123 | 456
1 | 124 | 457
2 | 234 | 567
即,两行用于JSON数组中包含两项的条目。是否可以让Postgres做到这一点?
json_populate_recordset
感觉是答案的重要组成部分,但我无法让它一次处理多行。
select id,
(details ->> 'json1')::int as json1,
(details ->> 'json2')::int as json2
from (
select id, json_array_elements(details) as details
from things
) s
;
id | json1 | json2
----+-------+-------
1 | 123 | 456
1 | 124 | 457
2 | 234 | 567
问题内容: 如果我有这样的话: 给出以下结构: 如何将其扩展到以下内容? 问题答案: 您可以用来遍历每一行,并使用列表推导将数据重塑为所需的形式: 产量 ivakar的解决方案,是最快的: 这是用于上述基准测试的设置:
有没有办法在presto中有效地将行扩展为列? 我尝试用“where team=1”和“where team=2”分别过滤原始数据集,首先相应地获得dataset1和DataSet2,然后在income_level上连接这两个数据集。然而,当income_level有太多不同的值时,这是不方便的。有没有什么高效的方法可以得到我想要的结果?
问题内容: 我有下表,该表为每个用户提供了多个电子邮件地址。 我需要将其展平为用户查询中的列。请根据创建日期为我提供“最新”的3个电子邮件地址。 问题答案: 使用从模块。
问题内容: 我有一个SQL选择如下: 实际中 在这个 更复杂的选择中。是字符串(varchar)。如何扩展该sql以从中选择行, 就像 文本来自(而不是完全等于)? 问题答案: 如果您在表2的文本列中有通配符表达式,则可以这样做。 否则,您需要在查询中添加。
我尝试将扩展添加到我的/(基于linux alpine)映像中: 尝试创建扩展时,出现以下错误: 但当我搜索容器中的文件时,我可以在不同的目录中找到它们: 如何安装到不同的目录或配置来识别我添加的扩展? 最新消息 当我只是的文件到我得到的错误: 更新2 因此,的问题是,指向但是在中。当我将所有内容移动到相应的目录时,我可以成功创建扩展。 这就引出了我希望找到答案的问题。如何将安装到
问题内容: 我使用PostgreSQL9.4我有一个名为表列,并希望写一个查询将返回的时间范围在两个单独的列和。我试图像数组一样处理它,但是它不起作用: 当前表: 所需表: 问题答案: 使用 和。 像这样: 或您的示例: