2017-05-24 15 views
0

jsonbフィールドを持つpostgresql 9.4データベースにテーブルがあります。 いくつかの例行:Postgresは、json配列がjsonを含む場所を選択します。

[{"name": "145119603", "numberOfCarrot": 2}] 
[{"name": "1884595530", "numberOfCarrot": 1}] 
[{"name": "363058213", "numberOfCarrot": 1}] 
[{"name": "1427965764", "numberOfCarrot": 1}] 
[{"name": "193623800", "numberOfCarrot": 43}, {"name": "419955814", "numberOfCarrot": 0}] 
[{"name": "624635532", "numberOfCarrot": 0}, {"name": "1884595530", "numberOfCarrot": 1}] 
[{"name": "791712670", "numberOfCarrot": 1}] 
[{"name": "895207852", "numberOfCarrot": 0}] 
[{"name": "144695994", "numberOfCarrot": 3}, {"name": "384217055", "numberOfCarrot": 23}] 
[{"name": "1079725696", "numberOfCarrot": 10}] 
  • どのように私はすべての行の最大numberOfCarrotを見つけることができますか?
  • 1行のmax numberOfCarrotはどのようにして見つけることができますか?
  • numberOfCarrotが優れているか、それより劣っている行を見つけるにはどうすればよいですか?
  • numberOfCarrotが何かよりも優れているか、それより劣っているjson配列の要素を見つけるにはどうすればよいですか?

答えて

1

あなたのデータは次のようになりますので、あなたは、一意の列(通常は主キー、のidをしましょう)が必要です:

(1, '[{"name": "145119603", "numberOfCarrot": 2}]'), 
(2, '[{"name": "1884595530", "numberOfCarrot": 1}]'), 
... 

使用jsonb_array_elements()横に参加。例:where使用する方法

select max(value->>'numberOfCarrot')::int 
from my_table, 
jsonb_array_elements(jdata); 

max 
----- 
    43 
(1 row) 

select id, max((value->>'numberOfCarrot')::int) 
from my_table, 
jsonb_array_elements(jdata) 
group by 1 
order by 1; 

id | max 
----+----- 
    1 | 2 
    2 | 1 
    3 | 1 
    4 | 1 
    5 | 43 
    6 | 1 
    7 | 1 
    8 | 0 
    9 | 23 
10 | 10 
(10 rows) 

select id, value->>'numberOfCarrot' as "numberOfCarrot" 
from my_table, 
jsonb_array_elements(jdata) 
where (value->>'numberOfCarrot')::int > 20; 

id | numberOfCarrot 
----+---------------- 
    5 | 43 
    9 | 23 
(2 rows) 

select id, array_agg(value->>'numberOfCarrot') as "numberOfCarrot" 
from my_table, 
jsonb_array_elements(jdata) 
where (value->>'numberOfCarrot')::int > 2 
group by 1 
order by 1; 

id | numberOfCarrot 
----+---------------- 
    5 | {43} 
    9 | {3,23} 
10 | {10} 
(3 rows)  
+0

感謝を!それは完璧だ !!! – user3805731

関連する問題