我有一个像这样的JSON文档:
{"cases":[1983,2188, etc.],"deaths":[78,84, etc.]});
我正在尝试并排使用它们:
SELECT dd::numeric AS deaths, cc::numeric AS cases
FROM covid_json, json_array_elements_text(info->'deaths') dd, json_array_elements_text(info->'cases') cc
cases
和deaths
两者都具有51的长度,但上面的查询给出了2601(51 ^ 2)行像这样的:
如何防止这些值在每一行重复出现?
一种选择是去巢with ordinality
。这会为每个元素添加一个索引号,您可以将其用于join
:
select d.deaths, c.cases
from covid_json cj
cross join lateral json_array_elements(cj.info -> 'cases') with ordinality as d(deaths, rn)
inner join lateral json_array_elements(cj.info -> 'deaths') with ordinality as c(cases, rn)
on c.rn = d.rn
如您的问题所述,这假定两个数组具有相同数量的元素。
样本数据:
| 信息| | :------------------------------------------------- -| | {“案件”:[1983,2188,2615],“死亡”:[78,84,87]} |
结果:
死亡 情况 :----- | :---- 1983年| 78 2188 | 84 2615 | 87
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句