Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL JSONB将哈希内的数组值分组_Postgresql_Jsonb - Fatal编程技术网

PostgreSQL JSONB将哈希内的数组值分组

PostgreSQL JSONB将哈希内的数组值分组,postgresql,jsonb,Postgresql,Jsonb,我们有一个PostgreSQLjsonb列,其中包含散列,散列又包含值数组: id | hashes --------------- 1 | {"sources"=>["a","b","c"], "ids"=>[1,2,3]} 2 | {"sources"=>["b","c","d","e","e"], "ids"=>[1,2,3]} 我们要做的是创建一个jsonb查询,该查询将返回 code | count --------------- "a" | 1 "b"

我们有一个PostgreSQL
jsonb
列,其中包含散列,散列又包含值数组:

id | hashes
---------------
1  | {"sources"=>["a","b","c"], "ids"=>[1,2,3]}
2  | {"sources"=>["b","c","d","e","e"], "ids"=>[1,2,3]}
我们要做的是创建一个
jsonb
查询,该查询将返回

code | count
---------------
"a"  | 1
"b"  | 2
"c"  | 2
"d"  | 1
"e"  | 2
我们一直在尝试一些类似于

SELECT jsonb_to_recordset(hashes->>'sources') 
但这不起作用-非常感谢您提供的任何帮助…

设置(应该是问题的一部分,请注意正确的json语法):

使用以下功能:

设置(应该是问题的一部分,注意正确的json语法):

使用以下功能:


我们最终以这种方式实现了这一目标:

SELECT jsonb_array_elements_text(hashes->'sources') as s1,
count(jsonb_array_elements_text(hashes->'sources'))
FROM a_table
GROUP BY s1;

但克林的解决方案更为完整,克林和帕特里克都比我们更快地到达了那里(谢谢你们两位)——所以他们都得到了分数

我们最终以这种方式实现了这一目标:

SELECT jsonb_array_elements_text(hashes->'sources') as s1,
count(jsonb_array_elements_text(hashes->'sources'))
FROM a_table
GROUP BY s1;
但克林的解决方案更为完整,克林和帕特里克都比我们更快地到达了那里(谢谢你们两位)——所以他们都得到了分数

SELECT h, count(*)
FROM (
    SELECT jsonb_array_elements_text(hashes->'sources') AS h FROM mytable
  ) sub
GROUP BY h
ORDER BY h;
SELECT jsonb_array_elements_text(hashes->'sources') as s1,
count(jsonb_array_elements_text(hashes->'sources'))
FROM a_table
GROUP BY s1;